pytest自动化测试[面试篇]

发布于:2025-03-16 ⋅ 阅读:(12) ⋅ 点赞:(0)

pytest是python的测试框架,它提供了许多功能,

测试运行

组织pytest的测试用例代码:模块名称以test_开头,类名以Test开头,函数名以test_开头, 然后用pytest命令即可运行测试用例。

  • 可以在命令行中,用pytest命令运行
  • 也可以在代码中,用pytest.main()运行

api自动化测试实现

  1. 第一步:通过代码编写,最终需要在测试用例,test_开头的函数中,对接口进行请求,然后断言
  2. 第二步:pytest运行时,就可以批量调接口api, 使用**–aluredir**参数,可以生成allure的测试报告
  3. 第三步:代码集成到git和jenkins中,代码最后在jenkins里面,运行pytest命令,allure的测试报告存在Jenkins的workspace中
    再结合Jenkins的allure插件可以在Jenkins中,查看历史测试报告。 最后可以设置Jenkins的邮件(钉钉)通知,发送报告。

具体代码实现

  1. 代码目录下有一个libs 目录(业务层), 一个功能模块写成一个py文件。 然后去封装接口,pytest测试用例方法,再调用libs层封装方法
  2. a【各个模块的请求方法、url 集中存在一个yaml文件中】 b【请求参数,预期值,是放到excel中的】
    • 业务层的业务类继承了BaseApi基类,也是自己封装的,提供了请求方法--------它可以获取到对应模块的接口的 method 和 URL
    • 测试用例的类中,每个测试方法那里,首先使用xrld获取到excel文件中对应接口的请求参数。使用 @pytest.mark.parametrize把数据传给测试用例,进行数据驱动。
  3. 初始化和身份校验
    • pytest它支持写初始化和清除的代码,使用@pytest.fixture()装饰器。参数:scope,参数3:autouse
    • 用例testcase目录,添加conftest.py, 里面写了整个项目运行前的初始化,进行登录。并且返回了token。 页面类进行实例化时,会传传入token,页面类请求接口时,会自动带上token。
    • 我在之前公司的实际项目中,也是初始化进行了登录,然后把token保存到配置中-----方式有所不同。

以上pyest部分未提到的一些用法

  1. 测试用例调用初始化方法:
    1. @pytest.fixture(autouse=True) 、
    2. @pytest.mark.usefixtures(“方法名”) 、
    3. 或直接在test_开头的函数中,直接把 fixture定义的方法名当成参数传入。
  2. 装饰器 @pytest.mark.repeat(2) 可以重复运行测试用例。
  3. pytest-assume库提供的,pytest.assume() 断言,如果断言失败,会继续执行,直到全部执行完。
  4. 测试用例方法上,添加@pytest.mark.skipif(True, reason=“跳过原因”),可以跳过用例。 (或 @pytest.mark.skip)
  5. pytest命令运行时,可以添加 -k 参数,指定某个测试用例py模块,或者测试用例类,或者某个测试用例方法。

allure测试报告

安装allure-pytest

  1. allure.attach() 可以添加更多的日志、截图等。
  2. @allure.epic、@allure.feature、@allure.story、@allure.title, 让用例分层。
  3. 使用with allure.step(),可以添加步骤。 若调用外部方法,也可以使用装饰器@allure.step(),装饰在外部方法上