pytest入门与基础用法

 

简介:

pytest是python的一个单元测试框架,类似python自带的unittest测试框架,但是比unittest框架使用起来更简洁,效率更高。
 
特点:
  • 命令行工具,容易上手,入门简单,编写用例简单,可读性强
  • 可以直接采用assert进行断言,不需要记忆self.assertEqual()等
  • 支持参数化(pytest.mark.parametrize)
  • 易于持续集成,适用于接口自动和UI自动化
  • 扩展性强,支持扩展第三方插件
  • 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败(xfail)
  • 支持重复执行(rerun)失败的case
  • 可以运行nose, unittest编写的测试case
  • 可生成html报告(pytest-html或allure)
  • 可支持执行部分用例(marker)

安装:

#前提:已安装pip,可通过以下命令判断是否安装
pip --version
#安装
pip install -U pytest
#查看pytest版本
pip show pytest
 

基础用法:

1、用例设计规则:

测试文件的文件名必须以"test_"开头,或者以"_test"结尾
测试类命名必须以"Test"开头
测试函数名必须以"test"开头
测试类里面不能使用"__init__"方法
 

2、断言方法:

基本的assert
 
简单示例:

 

 

3、pytest运行规则:

1、直接pytest,查找当前目录及其子目录下所有符合规则的文件,类,方法,函数并全部执行;
2、pytest 文件名.py,单独执行某个python文件
3、pytest 文件名.py::类名,单独执行某个文件中的某个类
4、pytest 文件名.py::类名::方法名,单独执行类中的某个方法
 
注意:
pytest用例执行是乱序的,如需指定用例的顺序,可使用pytest-ordering插件,在测试用例的方法前加上装饰器@pytest.mark.run(order=[num]) ,将按照num 值的大小顺序从小到大来执行

 

4、运行参数:

可使用pytest --help查看帮助文档

 

 个人常用到的参数:

 

 

 5、参数化:

使用@pytest.mark.parametrize() 进行参数化

 

 

6、框架结构:

在pytest中,可与unittest一样,在执行用例前后执行 setup,teardown 来增加用例的前置和后置条件
pytest的setup,teardown按照用例运行级别可分为以下几类:
模块级(setup_module/teardown_module)在模块始末调用
函数级(setup_function/teardown_function)在函数始末调用(在类外部)
类级(setup_class/teardown_class)在类始末调用(在类中)
方法级(setup_method/teardown_methond)在方法始末调用(在类中)
方法级(setup/teardown)在方法始末调用(在类中)

7、fixture:

(1)fixture作为函数参数:
例如测试用例1需要登录,测试用例2不需要,测试用例3需要,则可用fixture作为函数参数来控制:

 

 

(2)fixture指定范围共享:
除了用setup,teardown控制用例的前置后置外,还可用fixture功能自定义用例的前置后置
根据作用范围大小划分:session> module> class> function,具体作用范围如下:
function 函数或者方法级别都会被调用
class 类级别调用一次
module 模块级别调用一次,即一个文件调用一次
session 是多个文件调用一次(可以跨.py文件调用,每个.py文件就是module)
 
使用方法:
fixture函数前增加@pytest.fixture(scope="module")
测试用例前增加@pytest.mark.usefixtures("fixture函数名")
 
注意:
1、fixture函数可以放在单独的测试文件里,不与测试用例同一个文件
2、如果希望多个测试文件共享fixture,可以放在某个公共目录下新建一个conftest文件,将fixture放在里面
3、测试用例函数的参数列表包含fixture函数名字,pytest就可以检测到了,检测顺序:优先搜索该测试用例所在的文件,然后搜索conftest.py,并在测试函数运行之前执行该fixture函数。
 
注:fixture功能是pytest的特色功能,功能极为强大,具体使用可查看官方文档。

posted @ 2021-06-27 13:22  林中有雨  阅读(422)  评论(0编辑  收藏  举报