购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 初识pytest

pytest是基于Python语言的单元测试框架,也是一个命令行工具,可以自动找到测试用例执行并反馈测试结果,在编写测试用例方面比较自由,可以使用函数式的编程方式编写测试用例,也可以使用面向对象的方式编写测试用例。pytest测试框架断言assert使用Python原生的断言方式,同时pytest测试框架可以完美地和UnitTest测试框架整合起来,并结合Allure框架生成测试报告。与UnitTest相比,pytest测试框架更加自由灵活,使用UnitTest测试框架时,首先需要继承TestCase类,而且必须使用面向对象的编程方式。pytest测试框架属于第三方库,安装成功后,直接编写函数或者编写测试方法就可以使用。UnitTest测试框架与pytest测试框架的区别如表1-1所示。

1-1 UnitTest 测试框架与 Pytest 测试框架的区别

pytest是第三方库,需要单独进行安装,安装命令如下。

pip3 install pytest

安装成功后,可以直接使用。在pytest测试框架中,编写的测试方法(测试函数)必须以test开头,测试模块建议以“test_模块名称.py”的方式命名。pytest支持函数式的编程,也支持面向对象的编程,下面通过使用两种不同的编程方式编写测试用例来介绍pytest的基本使用。

1.2.1 函数方式编写测试用例

编写一个两个数相加的函数,通过函数的方式编写针对该函数的测试用例,代码如下。

备注:

测试用例执行后就会显示执行后的测试结果。

1.2.2 面向对象方式编写测试用例

在pytest测试框架中,使用面向对象方式编写测试用例,需要注意的是,类的首字母必须大写而且以Test开头,否则在测试类中编写的测试方法不会被搜索到,即无法执行。它的搜索规则为首先检查测试类是否满足pytest的规范,在测试类满足规范的基础上,再检查测试方法是否满足规范,如果测试方法满足pytest的规范,测试类不满足pytest的规范,那么测试类中的测试方法也就无法执行。代码如下。

在上述代码中,测试类并不是以Test开头的,所以执行代码后显示的测试用例执行数是0,执行结果如下。

collecting ... collected 0 items

把测试类从AddTest修改为TestAdd后,再次执行代码,就可以执行测试类中的测试方法了,修改后的代码如下。

执行结果如下。

collecting ... collected 1 item
test_demo.py::TestAdd::test_add_int PASSED

1.2.3 pytest执行结果信息

在pytest测试框架中,执行测试模块中的测试方法后,会显示每个测试用例的执行结果信息,常用的结果信息如下。

PASSED:表示结果通过。

FAILED:表示结果失败。

SKIPPED:表示跳过执行。

XFAIL:表示预期失败。

执行结果中,会显示FAILED、PASSED、SKIPPED、XFAIL,执行代码时带上参数-v可以显示详细的过程。下面通过编写案例来介绍该过程,代码如下。

代码执行结果如下。 H3n83/LBudtkYSkMMajBiM/rVbqDFrsbXtJc6hlfBNWQH4/SoT3q5qMA0K4OP6F5

点击中间区域
呼出菜单
上一章
目录
下一章
×