启用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本机方法的源代码可用吗?   java如何使父方法抛出异常?   java Android以编程方式设置不同屏幕大小/密度的布局   java如何使用一个变量来管理所有客户端请求   java输入一个txt文件,每行有一组数字   json java从jsonobject获取jsonarray错误   java将一个(WAV)写入一个文件只会说一个单词(最后一个单词)   java Telnet忽略原始字节   proguard java。运行桌面应用程序时出现lang.VerifyError   java用左键移动JLabel?   java如何在jText区域验证选项卡?   文件服务器客户端Javasocket编程中的字符串搜索   java省略了JSTL中的最后一个逗号<c:out>   java如何找到if或else代码已执行的次数?   java JavaScript WebSocket send()方法未执行   浮点数声明上的java标识符预期错误   java这是指二进制搜索算法吗?   编译mod at:reobfJar java时的minecraft问题。util。拉链ZipException:重复条目   java检测特定的震动运动(如图所示:D)