启用camelcase感知的pytest类集合
pytest-camel-collect的Python项目详细描述
pytest camel collect
允许pytest尊重类名模式中camelcasewords的单词边界。
安装
pip install pytest-camel-collect
用法
这个插件增强了^{
现在,-
(破折号)表示一个camelcase单词边界。
[pytest]python_classes=Camel-*
Camel-*
将匹配类名,如CamelClub
和CamelCamelCamel
,但不匹配Camelizer
。
为什么?
混炼类有助于减少样板。可以使用这些混音类 要添加测试,以验证作为不同用户进行身份验证时的API响应状态代码:
classForbidsAnonymousUsers:classTestAnonymousUsersAreForbidden:@pytest.fixturedefuser(self):returnAnonymousUser()deftest_anonymous_user_is_forbidden(self,response):assertresponse.status_code==401classForbidsNonAdmins:classTestNonAdminsAreForbidden:@pytest.fixturedefuser(self):returnUser(is_admin=False)deftest_non_admin_is_forbidden(self,response):assertresponse.status_code==401
现在,这些混和物可以用来声明某些测试环境的“特征”:
classDescribeMyAPIEndpoint(BaseAPITest):@pytest.fixturedefurl(self):return'/my-endpoint'classDescribeList(ForbidsAnonymousUsers,):@pytest.fixturedefmethod(self):return'GET'classDescribeCreate(ForbidsAnonymousUsers,ForbidsNonAdmins,):@pytest.fixturedefmethod(self):return'POST'
随着业务需求的变化,api端点现在必须以不同的方式响应 取决于用户的语言。
不流汗!作为命名学专家,我们添加命名良好的上下文类来测试其他语言:
classDescribeMyAPIEndpoint(BaseAPITest):# ...classDescribeCreate(ForbidsAnonymousUsers,ForbidsNonAdmins,):# ...classForEnglishSpeakers:@pytest.fixturedefuser(self,user):user.language='english'returnuserdefit_returns_english(self,response):assertresponse['message']=='Created new thing'classForSpanishSpeakers:@pytest.fixturedefuser(self,user):user.language='spanish'returnuserdefit_returns_spanish(self,response):assertresponse['message']=='Creado cosa nueva'
嗯,但是当pytest被执行时,它不会收集我们的两个新测试…
啊,对!python_classes
在pytest.ini中!
[pytest]python_classes=Test* Describe* For*
再次运行pytest,它将接受我们的测试!哦,还有 我们的{{CD8}}和^ {< CD9}}…而是因为 它们不继承^ {CD10}},^ {CD11}}夹具不存在, 他们失败了。
我们该怎么办?
简介:pytest camel collect,pytest插件启用you, 努力工作,可靠,绝对不是睡眠不足的开发人员 在pytest收集期间显式匹配camelcase单词。
不必再运行您的测试结果了, 只是因为您还想在ForSpanishSpeakers
上下文中运行测试!
不![pytest]python_classes=Test-* Describe-* For-*
这就是精神!现在,TestStuff
将被收集,而不是Testimony
;
DescribeStuff
将被收集,但不是DescribesCosas
;最重要的是,
ForSpanishSpeakers
将被收集,但不是ForbidsAnonymousUsers
。
开发
玩弄项目并运行其测试:
- 复制回购协议
- 在虚拟机中(或者不管你想做什么,我都不控制你),运行
pip install -e .[dev,test]
- 运行
py.test
以运行测试