python自动化之pytest框架以及数据驱动(第五天)

1.pytest框架需要遵循的规则

(1).py 测试文件必须以test 开头(或者以 test结尾)

(2)测试类必须以Test开头,并且不能有 init 方法

(3)测试方法必须以test 开头

(4)断言必须使用 assert

2.pytest数据驱动

在pytest中,数据驱动测试通常使用pytest.mark.parametrize标记实现。这个标记允许你向测试函数提供多组输入参数和预期结果,从而实现对一组数据进行测试的目的。

以下是一个简单的例子:

import pytest

@pytest.mark.parametrize("test_input,expected", [("3+5", 8), ("2+4", 6), ("6*9", 54)])
def test_eval(test_input, expected):
    assert eval(test_input) == expected

这个测试test_eval有两个参数test_inputexpected,使用 pytest.mark.parametrize 标记,我们给这两个参数提供了三组值。test_input 是要被 eval 函数执行的表达式,expected 是预期的计算结果。这样,这个测试实际上会运行三次,每次运行都使用一组不同的参数。

eval()是Python的一个内置函数,它可以将一个字符串当作Python代码来执行,并返回执行结果。这意味着你可以用它来动态地运行你创建的或者用户输入的Python代码。

例如,你可以像这样使用eval()

result = eval("3 + 4")
print(result) # 输出:7

运行上述测试,Pytest会对每一组参数执行一次测试函数,这样就能够很方便地进行数据驱动的测试。

3.登录接口

新建test_login模块(test_case包中创建)

test_login.py代码

# -*- coding: utf-8 -*-
# @File : test_login.py
# @Time : 2024/3/7 12:51
# @Author : syq
# @Email : 1721169065@qq.com
# @Software: PyCharm
import pytest
from lib.apiLib.login import Login
from tools.excelControl import get_data_excel
class Test_Login:
    @pytest.mark.parametrize("respData,resExcept",get_data_excel('../data/外卖系统接口测试用例-V1.5.xls','登录模块','Login'))
    def test_login(self,respData,resExcept):
        login=Login()
        resReal=login.login(respData)
        assert resReal['code']==resExcept['code']
if __name__ == '__main__':
    pytest.main(['test_login.py','-s'])


结果:

4.商铺接口

新建test_shop模块(test_case包中创建)

代码如下:

# -*- coding: utf-8 -*-
# @File : test_shop.py
# @Time : 2024/3/9 20:19
# @Author : syq
# @Email : 1721169065@qq.com
# @Software: PyCharm
import pytest
from tools.excelControl import get_data_excel
from lib.apiLib.shop import Shop
from lib.apiLib.login import Login

class Test_Shop:
    #获取token,token值只需要获取一次
    def setup_class(self):
        self.token=Login().login({"username":"ct0909","password":"89254"},getToken=True)
        self.shop=Shop(self.token)
    @pytest.mark.parametrize("respData,resReq",get_data_excel('../data/外卖系统接口测试用例-V1.5.xls','我的商铺','listshopping'))
    def test_shop_list(self,respData,resReq):
        resReal=self.shop.shop_list(respData)
        if "code" in resReal:
            assert resReal['code']==resReq['code']
        else:
            assert resReal['error']==resReq['error']
    #更新商铺
    @pytest.mark.parametrize("respData,resReq",get_data_excel('../data/外卖系统接口测试用例-V1.5.xls','我的商铺','updateshopping'))
    def test_shop_update(self,respData,resReq):
        shopId=self.shop.shop_list({"page":1,"limit":1})['data']['records'][0]['id']
        image_path=self.shop.file_update('温州修改.png','../data/温州修改.png','image.png')
        resReal=self.shop.shop_update(respData,shopId,image_path)
        assert resReal['code']==resReq['code']
if __name__ == '__main__':
    pytest.main(['test_shop.py','-s'])

结果:

相关推荐

  1. pytest 数据驱动

    2024-03-16 00:18:02       47 阅读
  2. Python自动化测试:unittest与pytest框架

    2024-03-16 00:18:02       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-16 00:18:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-16 00:18:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-16 00:18:02       87 阅读
  4. Python语言-面向对象

    2024-03-16 00:18:02       96 阅读

热门阅读

  1. 安卓自定义ScrollView

    2024-03-16 00:18:02       34 阅读
  2. 技术问题记录

    2024-03-16 00:18:02       47 阅读
  3. Spring Cloud面试系列-01

    2024-03-16 00:18:02       49 阅读
  4. 【gpt实践】实用咒语分享

    2024-03-16 00:18:02       44 阅读
  5. uniapp内实现链接跳转到浏览器网页上

    2024-03-16 00:18:02       43 阅读
  6. jdk8与jdk17的区别。springboot2.x与springboot3.x的区别

    2024-03-16 00:18:02       46 阅读
  7. 4.Python从入门到精通—Python 基础语法详细讲解-下

    2024-03-16 00:18:02       39 阅读
  8. Reactor,Proactor,Actor网络模型

    2024-03-16 00:18:02       31 阅读
  9. 蓝桥杯第1167题——荷马史诗

    2024-03-16 00:18:02       46 阅读
  10. 用 C 语言模拟 Rust 的 Box 类型

    2024-03-16 00:18:02       38 阅读
  11. Flink读取iceberg表

    2024-03-16 00:18:02       41 阅读
  12. 软件工程师,是时候了解下Rust编程语言了

    2024-03-16 00:18:02       44 阅读
  13. jsp中el表达式带有英文单双引号

    2024-03-16 00:18:02       43 阅读