使用数据提供程序的python unittest等等。

python-testl的Python项目详细描述


testly-针对python使用数据提供程序和更多功能增强unittest

PypiGithubCodacyCodacy coverageTravis building

功能

  • 数据提供程序
  • unittest
  • 兼容
  • python2,3兼容
  • 运行测试集的命令行参数(由同一数据提供程序提供)

安装

# install released version
pip install python-testly
# install latest version
pip install git+git://github.com/pwwang/testly.git

开始

编写测试套件:

importtestlyclassTest(testly.TestCase):# your tests go herepassif__name__=='__main__':testly.main(verbosity=2)

python2,3兼容断言

classTest(testly.TestCase):deftest(self):self.assertCountEqual([1,2],[2,1])self.assertRaisesRegex(ZeroDivisionError,"(integer )?division (or modulo )?by zero",lambda:1/0)self.assertRegex('abcd',r'\w+')

有用的扩展断言

classTest(testly.TestCase):deftest(self):self.assertDictContains({'a':1},{'a':1,'b':2})self.assertDictNotContains({'a':2},{'a':1,'b':2})self.assertSeqContains([1],[1,2])self.assertSeqNotContains([3],[1,2])self.assertInAny('dogs',['one dog','two dogs'])self.assertNotInAny('cat',['one dog','two dogs'])self.assertRegexAny(r'dogs?',['one dog','two dogs'])self.assertNotRegexAny(r'cat',['one dog','two dogs'])

使用数据提供程序

classTestTest(testly.TestCase):defdataProvider_test(self):# use tupleyield1,1# use dictyielddict(in_=2,out=2)# use testly data composeryieldtestly.Data(4,out=4)deftest(self,in_,out):self.assertEqual(in_,out)
> python test.py
test-0 (__main__.TestTest) ... ok
test-1 (__main__.TestTest) ... ok
test-2 (__main__.TestTest) ... ok
test-3 (__main__.TestTest) ... ok

彩色差异输出

classTestTest(testly.TestCase):defdataProvider_test(self):yield1,1yield2,3yield'\n'.join(['oooooooone','two','aaa','tree','1','1','1','1','1','1','fourfourfourfourfourfourfourfourfour very very very very very very very very very very very very very very very very very very very very very very very very very very long line']),'\n'.join(['oooooooore','emu','three','1','1','1','1','1','1','aaa','fivefivefivefivefivefivefivefivefive'])yield['oooooooone','two','aaa','tree','1','1','1','1','1','1','fourfourfourfourfourfourfourfourfour very very very very very very very very very very very very very very very very very very very very very very very very very very long line'],['oooooooore','emu','three','1','1','1','1','1','1','aaa','fivefivefivefivefivefivefivefivefive']yield{'a':1,'b':2},{'a':1,'b':3,'c':8}deftest(self,in_,out):self.diffColWidth=160# max columns of the diff regionself.diffContext=1# number context lines to showifnotisinstance(in_,(dict,list)):self.diffLineNo=False# line numberifisinstance(in_,list):self.diffTheme='contrast'# the themeself.assertEqual(in_,out)

colored-diff

与原始输出相比:
plain-diff

运行特定的测试或测试集

importsys,testlyclassTestTest(testly.TestCase):defsetUp(self):# setUp for test setifself.isFirst():sys.stderr.write('TestSet %s starts ... '%self.setName())# setUp for regular testselifnotself.isOfSet():# regulator setUp for other testssys.stderr.write('Test %s starts ...'%self._testMethodName)deftearDown(self):# tearDown for test setifself.isLast():sys.stderr.write('TestSet %s ends ... '%self.setName())# tearDown for regular testselifnotself.isOfSet():# regulator setUp for other testssys.stderr.write('Test %s ends ... '%self._testMethodName)defdataProvider_test1(self):yield1,1yield2,2yield3,3deftest1(self,in_,out):self.assertEqual(in_,out)# regular testdeftest2(self):self.assertEqual(1,1)if__name__=='__main__':testly.main(verbosity=2)

运行所有测试:

> python test.py
test1-0 (__main__.TestTest) ... TestSet test1 starts ... ok
test1-1 (__main__.TestTest) ... ok
test1-2 (__main__.TestTest) ... TestSet test1 ends ... ok
test2 (__main__.TestTest) ... Test test2 starts ...Test test2 ends ... ok

----------------------------------------------------------------------
Ran 4 tests in 0.000s

OK

运行特定测试(setUptearDown测试集也可以工作):

> python test.py TestTest.test1-2
test1-2 (__main__.TestTest) ... TestSet test1 starts ... TestSet test1 ends ... ok

----------------------------------------------------------------------
Ran 1test in 0.000s

OK
> python test.py TestTest.test2
test2 (__main__.TestTest) ... Test test2 starts ...Test test2 ends ... ok

----------------------------------------------------------------------
Ran 1test in 0.000s

OK

运行特定的测试集:

> python test.py TestTest.test1
test1-0 (__main__.TestTest) ... TestSet test1 starts ... ok
test1-1 (__main__.TestTest) ... ok
test1-2 (__main__.TestTest) ... TestSet test1 ends ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带有服务类安卓的java altbeacon   java在OpenXava免费版本中可以创建多个用户吗?   java如何决定定义变量“private”?   java为什么GetMethodID()对不存在的方法不返回NULL?   java Get JComboBox项字符串表示法   java如何在ifs之间设置限制?   java Android错误:IllegalStateException   JavaSpring4MVC语言环境已更改,但JSP对此没有响应   java Netbeans:如何构建。jar文件随附外部文件。jar库?   Spring Petclinic项目Maven编译时出现java错误   声明Java数组增量元素的快速方法   java无法使用相对xpath找到元素   javascript无法更改标题,也无法在操作栏上显示图标   java标签不是一个接一个地动态创建的   java如何使用ThymeLeaf将对象的属性绑定到隐藏字段?   java从EJB无状态会话bean调用CDI会话范围的生产者方法   java为什么num+=array[i]与for循环中的num=num+array[i]的工作方式不同   使用jsonsimple实现jQuery UI自动完成的java JSON格式   JavaFaceletsUI:重复标记中断JSF表单验证