如何学好网站开发,音乐网站数据库怎么做,网页传奇手游排行榜前十名,天眼查企业信息官网在之前的文章中主要分享了 pytest 的实用特性#xff0c;接下来讲 Pytest 参数化用例的构建。
如果待测试的输入与输出是一组数据#xff0c;可以把测试数据组织起来用不同的测试数据调用相同的测试方法。参数化顾名思义就是把不同的参数#xff0c;写到一个集合里#xf… 在之前的文章中主要分享了 pytest 的实用特性接下来讲 Pytest 参数化用例的构建。
如果待测试的输入与输出是一组数据可以把测试数据组织起来用不同的测试数据调用相同的测试方法。参数化顾名思义就是把不同的参数写到一个集合里然后程序会自动取值运行用例直到集合为空便结束。pytest 中可以使用pytest.mark.parametrize来参数化。
parametrize( ) 方法源码
主要参数说明 argsnames 参数名是个字符串如中间用逗号分隔则表示为多个参数名 argsvalues 参数值参数组成的列表列表中有几个元素就会生成几条用例 使用方法 使用 pytest.mark.paramtrize() 装饰测试方法 parametrize(‘data’, param) 中的 “data” 是自定义的参数名param 是引入的参数列表 将自定义的参数名 data 作为参数传给测试用例 test_func 然后就可以在测试用例内部使用 data 的参数了 创建测试用例传入三组参数每组两个元素判断每组参数里面表达式和值是否相等代码如下 运行结果
整个执行过程中pytest 将参数列表 [(“35”,8),(“25”,7),(“75”,30)] 中的三组数据取出来每组数据生成一条测试用例并且将每组数据中的两个元素分别赋值到方法中作为测试方法的参数由测试用例使用。
同一个测试用例还可以同时添加多个pytest.mark.parametrize装饰器, 多个 parametrize 的所有元素互相组合类似笛卡儿乘积生成大量测试用例。
场景比如登录场景用户名输入情况有 n 种密码的输入情况有 m 种希望验证用户名和密码就会涉及到 nm 种组合的测试用例如果把这些数据一一的列出来工作量也是非常大的。pytest 提供了一种参数化的方式将多组测试数据自动组合生成大量的测试用例。示例代码如下
运行结果
分析如上运行结果测试方法 test_foo( ) 添加了两个 pytest.mark.parametrize() 装饰器两个装饰器分别提供两个参数值的列表2 * 3 6 种结合pytest 便会生成 6 条测试用例。在测试中通常使用这种方法是所有变量、所有取值的完全组合可以实现全面的测试。
下面讲结合 pytest.fixture 与 pytest.mark.parametrize 实现参数化。
如果测试数据需要在 fixture 方法中使用同时也需要在测试用例中使用可以在使用 parametrize 的时候添加一个参数 indirectTruepytest 可以实现将参数传入到 fixture 方法中也可以在当前的测试用例中使用。
parametrize 源码 indirect 参数设置为 Truepytest 会把 argnames 当作函数去执行将 argvalues 作为参数传入到 argnames 这个函数里。创建“test_param.py”文件代码如下 运行结果
上面的结果可以看出当 indirectTrue 时会将 login_r 作为参数test_user_data 被当作参数传入到 login_r 方法中生成多条测试用例。通过 return 将结果返回当调用 login_r 可以获取到 login_r 这个方法的返回数据。
总结
感谢每一个认真阅读我文章的人
作为一位过来人也是希望大家少走一些弯路如果你不想再体验一次学习时找不到资料没人解答问题坚持几天便放弃的感受的话在这里我给大家分享一些自动化测试的学习资源希望能给你前进的路上带来帮助。 文档获取方式
加入我的软件测试交流群1007119548免费获取~同行大佬一起学术交流每晚都有大佬直播分享技术知识点
这份文档对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你 以上均可以分享只需要你搜索vx公众号程序员雨果即可免费领取