Hi, I released Oktest.py 0.10.0. http://packages.python.org/Oktest/ http://www.kuwata-lab.com/oktest/
Oktest.py is a new-style testing library for Python. :: from oktest import ok, NG ok (x) > 0 # same as assertTrue(x > 0) ok (s) == 'foo' # same as assertEqual(s, 'foo') ok (s) != 'foo' # same as assertNotEqual(s, 'foo') ok (f).raises(ValueError) # same as assertRaises(ValueError, f) ok (u'foo').is_a(unicode) # same as assertTrue(isinstance(u'foo', unicode)) NG (u'foo').is_a(int) # same as assertTrue(not isinstance(u'foo', int)) ok ('A.txt').is_file() # same as assertTrue(os.path.isfile('A.txt')) NG ('A.txt').is_dir() # same as assertTrue(not os.path.isdir('A.txt')) See http://www.kuwata-lab.com/oktest/oktest-py_users-guide.html for details. Changes and Enhancements ------------------------ * [change] 'oktest.spec()' is obsoleted completely. It will print warning message if you use it. * [change] 'oktest.helper' module is renamed to 'oktest.util'. ('oktest.helper' is still available for backward compabibility.) * [enhance] Add 'oktest.main()' which is a replacement of 'oktest.run()'. Using 'oktest.main()' instead of 'oktest.run()', command options are available. ex:: ## for example: $ python test/foobar_test.py -sp -f test='*keyword*' ## is almost same as: $ python -m oktest test/foobar_test.py -sp -f test='*keyword*' * [enhance] Add 'oktest.fail(message)' which is same as 'unittest.fail(message)'. ex:: from oktest import fail fail("not impelmented yet") # will raise AssertionError * [enhance] (Experimental) Add '@todo' decorator which is equivarent to '@unittest.expectedFailure'. ex:: from oktest import ok, test, todo def add(x, y): return 0 # not implemented yet! class AddTest(unittest.TestCase): @test("returns sum of arguments.") @todo # equivarent to @unittest.expectedFailure def _(self): ok (10, 20) == 30 ## will be failed expectedly ## (because not implemented yet) Expected failure of assertion is reported as '[TODO]', not '[Failed]'. * [enhance] (Experimental) Test context supported. It helps you to describe specification in structured style. ex:: from oktest import ok, test from oktest.context import subject, situation class SampleTestCase(unittest.TestCase): SUBJECT = "class 'Sample'" with subject("method1()"): with situation("when condition:"): @test("spec1") def _(self): ... @test("spec2") def _(self): ... with situation("else:"): @test("spec3") def _(self): ... Output exmple:: $ python test/example_test.py * class 'Sample' + method1() + when condition: - [ok] spec1 - [ok] spec2 + else: - [ok] spec3 ## total:3, passed:3, failed:0, error:0, skipped:0 (elapsed 0.000) -- regards, makoto kuwata -- http://mail.python.org/mailman/listinfo/python-list