1、命名规范

测试模块的命名应以test_开头,如:test_calculator.py。

测试类的命名应以Test开头,如:TestClassAddition。

测试函数应以test_开头,如:test_addition()。

注意:测试方法,是根据ASCII顺序执行,并非按照测试方法编写的顺序。如:test_login()和test_add(),肯定会先运行test_add()。

2、Pytest的运行模式

(1)Pycharm运行:

光标定在某个方法,右键运行只会运行此方法。光标定在类名,右键运行会运行整个py文件。

需要在Pycharm中设置test runner为pytest。

(2)终端cmd命令:

pytest:会运行所有py文件。

pytest 文件名.py:指定运行某个py文件。

pytest 文件名.py -v :指定运行某个py文件,且打印详细信息。

pytest 文件名.py -s :指定运行某个py文件,且输出打印信息。

pytest ./路径名称:运行指定目录的文件

pytest ./路径/文件名.py ::类名/函数名:运行指定类或方法

(3)main方法运行:

 if __name__ == '__main__':
    pytest.main(["-s","test_login_para1.py"])

3、Pytest的运行顺序

(1)pytest默认执行顺序:根据ASCII排序

输出结果:

(2)指定顺序:order控制

添加装饰器@pytest.mark.run(order=2),用例执行顺序会以order值大小升序去调用执行

注意:需要先安装pytest的插件:

可以在Pycharm安装:Setting->Project Interpreter->+->安装pytest-ordering

可以命令行安装:pip install pytest-ordering

输出结果:

4、Pytest 标签模式

(1)不执行,直接跳过:

@pytest.mark.skip("不执行此方法")

输出结果:

(2)条件跳过:

@pytest.mark.skipif(condition=='XX', reason='XXXX')

输出结果:

5、Pytest的前置和后置方法

(1)初始化方法:setup_method()

即:每个测试方法开始前都需要进行的处理。

(2)回收方法:teardown_method()

即:每个测试方法执行后,要完成一些回收工作。

6、Pytest的前置和后置类函数

(1)前置类函数:setup_class()

(2)后置类函数:teardown_class()

注:在整个类分别只执行一次

7、Pytest参数化&数据驱动:@pytest.mark.parametrize()

(1)单个参数:

@pytest.mark.parametrize('参数名',(参数值1,参数值2,参数值3))

(2)多个参数:

@pytest.mark.parametrize('参数名1,参数名2',([参数值1,参数值2],[参数值3,参数值4]))

def test_方法名(self,参数名1,参数名2)

8、Pytest测试方法之间传参:

(1)单一参数传递:@pytest.fixture()

输出结果:

(2)多个参数传递:

A函数把多个参数传到列表里,然后返回此列表,B函数调用A函数。

9、异常处理

try:

       (想捕捉的代码)

except Exception as e:

        (抛出异常会执行的代码)

finally:

        (无论是否有异常,都会执行的代码)

10、Pytest的断言

Pytest默认提供如下断言方法:

assert xx  判断xx为真

assert not xx 判断xx不为真

assert a in b 判断b包含a

assert a == b 判断a等于b

assert a != b 判断a不等于b

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐