【测试框架篇】单元测试框架pytest(2):用例编写

一、 前言

前面一章我们介绍了pytest环境安装和配置,并在pycharm里面实现了我们第一个pytest脚本。但是有些童鞋可能在编写脚本的时候遇到了问题,本文会讲一下我们编写pytest用例时需要遵守哪些既定的规则,同时这个规则也是可以修改的。

二、用例编写

1、默认的用例识别的规则

当我们通过pytest执行用例时,pytest会自动递归遍历执行路径下所有的目录,根据pytest中默认用例的识别的规则,自动收集测试用例。所有在使用pytest编写测试用例之前,我们首先需要了解一下pytest收集用例时默认的用例识别规则。

  • 用例文件: 所有文件名为test_开头或者**_test开头**的文件才会被识别为用例文件;
  • 用例类: 测试文件中每个Test开头的类就是一个测试用例类,也就是说,我们定义class的时候必须以Test开头,但是没有init方法
  • 测试用例: 测试类中每个test开头的方法就是一条测试用例,测试文件中每个test开头的函数也是一条测试用例。也就是说,编写测试用例必须以test开头

注意:上述默认的用例查找规则,可在pytest的配置文件pytest.ini进行修改(后续章节会详细介绍配置文件的使用) 另外pytest兼容unittest,以unittest的用例编写规范写的用例,pytest都能够识别出来。

2、编写用例

通过了解上述pytest中用例识别的规则,可以知道pytest中用例编写,能使用函数的形式,也能使用类的形式,那么接下来就分别给大家介绍一下这两种方式编写用例。

1)以函数形式编写用例

  • 规则:用例方法名以test开头
python 复制代码
# \testcase\test_demo1.py
def test_demo():
    print('以函数形式编写用例')
    assert 1==2
  • 在pycharm终端中输入pytest命令就可以执行测试函数,输出结果如下:

这里用的是在pycharm终端输入pytest命令执行用例,其实有多种方法可以用来执行用力的。后续会给大家一一讲述。另外这里出现了assert断言导致用例失败,大家可以提前感受下。

2)以类的形式编写用例

  • 规则: 测试类命名以Test开头,用例方法以test开头
python 复制代码
import pytest


class TestDemo:

    def test_demo(self):
        print('以类的形式编写用例')
        assert 1

    def test_demo2(self):
        print('test_demo2用例')
        assert 100 == 200


if __name__ == '__main__':
    pytest.main()
  • 前面讲的用pytest命令执行,这里我们换种方式执行,也就是在用例里面直接调用pytest.main()函数。

三、执行测试

  • 在上面我们使用的是 pytest这个命令去执行测试用例。关于pytest执行测试,有两种方式,一种是命令行通过pytest这个命令执行,另外在代码中可以通过pytest.main()这个方法来执行测试。接下来就和大家分别详细的介绍一下pytest执行测试的方式和常用的参数
1、执行参数
python 复制代码
# 测试用例
class TestDome:

    def test_demo1(self):
        print('----测试用例执行-----------')
        assert 11 == 11
  • 参数:-v显示测试的详细参数信息
复制代码
  • 参数:-s显示测试执行的输出信息
复制代码
2、pytest.main执行的参数传递
  • pytest.main方法执行测试参数传递方式:
复制代码
import pytest

args = ['-v','-s']
pytest.main(args)
  • 所有的参数放在列表中,每个参数就是列表中的一个元素
  • 详细的参数可以使用命令pytest -h查看
3、指定执行的测试目录
  • 命令:pytest 测试目录路径
复制代码
import pytest

args = ['-v','-s','testcase/']
pytest.main(args)
  • pytest会执行指定目录路径下所有的测试用例
4、指定执行的测试文件
  • 命令:pytest 测试文件路径
复制代码
import pytest

args = ['-v','-s','testcase/test_demo1.py']
pytest.main(args)
  • pytest会执行指定测试文件中下所有的测试用例
5、指定执行的测试类
  • 命令:pytest 测试文件::测试类
复制代码
import pytest

args = ['-v','-s','testcase/test_demo1.py::TestClass']
pytest.main(args)
  • pytest会执行指定测试类里面所有的测试用例
6、指定执行的测试用例
  • 命令:pytest 测试文件::测试类::测试方法
复制代码
import pytest

args = ['-v','-s','testcase/test_demo1.py::TestClass::test_method']
pytest.main(args)
  • pytest会执行指定的测试方法
相关推荐
测试小小怪下士29 分钟前
单元测试、集成测试、系统测试、验收测试、压力测试、性能测试、安全性测试、兼容性测试、回归测试(超详细的分类介绍及教学)
功能测试·单元测试·测试用例·集成测试·压力测试·模块测试·安全性测试
无熵~2 小时前
C# 软件测试
单元测试
Dreams°1238 小时前
【大数据测试HBase数据库 — 详细教程(含实例与监控调优)】
大数据·功能测试·单元测试
川石课堂软件测试12 小时前
性能测试|JMeter接口与性能测试项目
javascript·数据库·python·jmeter·单元测试
一路向阳~负责的男人16 小时前
前端单元测试框架 引入说明
前端·单元测试
长弓聊编程19 小时前
如何使用gtest编写C++单元测试代码
c++·单元测试
lynn8570_blog20 小时前
采用koin 依赖注入进行viewmodel单元测试
单元测试
互联网杂货铺2 天前
软件测试之白盒测试(超详细总结)
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
小码哥说测试2 天前
Selenium+Pytest自动化测试框架 ------ 禅道实战
自动化测试·软件测试·selenium·测试工具·单元测试·pytest·接口测试