启用camelcase感知的pytest类集合

pytest-camel-collect的Python项目详细描述


pytest camel collect

PyPI version

允许pytest尊重类名模式中camelcasewords的单词边界。

安装

pip install pytest-camel-collect

用法

这个插件增强了^{}的模式匹配 在pytest.ini、tox.ini或setup.cfg文件中。

现在,-(破折号)表示一个camelcase单词边界。

[pytest]python_classes=Camel-*

Camel-*将匹配类名,如CamelClubCamelCamelCamel,但不匹配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_classespytest.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将被收集,而不是TestimonyDescribeStuff将被收集,但不是DescribesCosas;最重要的是, ForSpanishSpeakers将被收集,但不是ForbidsAnonymousUsers

开发

玩弄项目并运行其测试:

  1. 复制回购协议
  2. 在虚拟机中(或者不管你想做什么,我都不控制你),运行pip install -e .[dev,test]
  3. 运行py.test以运行测试

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

推荐PyPI第三方库


热门话题
Java如何在泛型类中调用我的类T的方法   java如何在XML配置中添加quartz JobListener(springframework)   java JPA查询以空值结束   密码学为什么Java DES密钥生成器生成的密钥大小不正确?   java布尔算法在输出为假时生成真输出   java缓存休眠混乱的行为   java如何让Android SDK 1.5版在我的G1手机上运行?   java无状态应用程序Spring安全性   Eclipse上的java,“首选项>常规>工作区>使用本机挂钩或轮询刷新”做了什么?   java私有静态方法从公共静态方法访问   滚动窗格JavaFX中图形上的java静态标签   如何从Oracle Java教程中调用findLargest方法(使用接口作为类型)   JavaEE:EJB远程接口中的自定义类