IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Pytest 实战GOGO -> 正文阅读

[开发测试]Pytest 实战GOGO

一. @pytest.mark. parametrize() 基本用法
示例1:

import pytest
class TestApi():
    @pytest.mark.parametrize('args',['111','222','333'])
    def test_api_01(self,args):
        print(args)
if __name__ == '__main__':
    pytest.main()

示例2:

import pytest
class TestApi():
    @pytest.mark.parametrize('name,age',[['张三','18'],['李四','19'],['王五','21']])
    def test_api_01(self,name,age):
        print(name,age)
if __name__ == '__main__':
    pytest.main()

二. YAML文件详解–实现接口自动化
1.用于全局的配置文件 ini/yami
2.用于写测试用例(接口测试用例居多)

yaml是一种数据格式,支持注释、换行、多行字符串、裸字符串(整形、字符串)
语法规则:
1.区分大小写
2.不能使用Tab缩进,只能用空格
3.注释为#
数据组成:
1.Map对象,键值对(键+:+空格+值)
2. - 表示数组

- test:
   - one: 1
   - two: 2

三.废话少说,实战练习下
1.创建文件夹【Testcase】,然后创建【test_api.py】。
test_api.py 代码:

import requests
import pytest

class TestApi:
    def test_login(self):
        url = "http://apis.juhe.cn/****/***"
        headers = None
        params = {
            'key': '从聚合数据拿',
            'phone': '13000000000'
        }
        result = requests.get(url=url,params=params)
        # 输出一下响应结果
        print(result.text)
if __name__ == '__main__':
    pytest.main()

运行一下,诶!接口能用哈!
2.【Testcase】下,创建一个【run.py】文件。
run.py 代码:

import pytest

if __name__ == '__main__':
    pytest.main()

运行一下,发现能调用测试文件,不错不错。
3. 【Testcase】同级目录,创建pytest的配置文件【pytest.ini】,这样就可以自定义配置一些东西了
pytest.ini 代码:

[pytest]
addopts = -vs
#测试用例文件夹
testpaths = ./Testcase
#配置测试搜索的模块文件名称
python_files = test_*.py
#配置测试搜索的测试类名
python_classes = Test*
#配置测试搜索的测试函数名
python_functions = test
  1. 【Testcase】同级目录,创建文件【test.txt】,这里是pytest 用到的一些插件。
    test.txt :
pytest
pytest-html
pytest-xdist
pytest-ordering
pytest-rerunfailures
allure-pytest

pytest
pytest-html 生成HTML格式的自动化测试报告
pytest-xdist 测试用例分布式执行,多CPU分发
pytest-ordering 用于改变测试用例的执行顺序
pytest-rerunfailures 用于用例失败后的重跑
allure-pytest 用于生成美观的测试报告
这个需要运行一下,进行安装。
打开终端,输入命令:

pip install -r test.txt

5.继续接第2步哈,接口运行没问题了。尝试把url、headers、params放在一个yaml文件中,然后进行读取。
在【Testcase】下,创建【test_api.yaml】文件,并写入数据,参考Yaml文件详解。
test_api.yaml 代码:

-
 url: http://apis.juhe.cn/***/***
 params:
     key: '****************'
     phone: 13000000000

6.数据有了,但是还得读取出来。在【Testcase】下,创建【yaml_read.py】
yaml_read.py 代码:

import yaml

class YamlRead():
    # 传入yaml文件
    def __init__(self,yaml_file):
        # 通过init方法把yaml文件传到这个类
        self.yaml_file = yaml_file
    # 读取yaml文件
    def Yaml_Read(self):
        # 打开yaml 文件作为 f
        with open(self.yaml_file,encoding='utf-8') as f:
            # 读取文件并加载出来到 value
            value = yaml.load(f, Loader=yaml.FullLoader)
            print(value)
if __name__ == '__main__':
    YamlRead('./test_api.yaml').Yaml_Read()

运行一下,发现可以得到【test_api.yaml】中的数据。
7.然后回到【test_api.py】,最关键的@pytest.mark.parametrize()
【test_api.py】修改代码如下:

import requests
import pytest
from yaml_read import YamlRead

@pytest.mark.parametrize('data',YamlRead('./test_api.yaml').Yaml_Read())
class TestApi:
    def test_login(self, data):
        url = data['url']
        params = data['params']
        result = requests.get(url=url,params=params)
        # 输出一下响应结果
        print(result.text)
if __name__ == '__main__':
    pytest.main()

【test_api.py】修改代码如下:

import yaml

class YamlRead():
    # 传入yaml文件
    def __init__(self,yaml_file):
        # 通过init方法把yaml文件传到这个类
        self.yaml_file = yaml_file
    # 读取yaml文件
    def Yaml_Read(self):
        # 打开yaml 文件作为 f
        with open(self.yaml_file,encoding='utf-8') as f:
            # 读取文件并加载出来到 value
            value = yaml.load(f, Loader=yaml.FullLoader)
            return value

然后运行一下【test_api.py】中的if name == ‘main’,发现可以返回正确数据了。(自己提前复制一份,进行一下修改前后的对比哈)
8.一般我们不会这样调用,我们需要运行的只是【run.py】
首先我们把【test_api.py】中的 if 删掉

if __name__ == '__main__':
    pytest.main()

删除或者注释。
然后运行【run.py】,发现报错了,找不到文件。
FileNotFoundError: [Errno 2] No such file or directory: ‘./test_api.yaml’
那就修改下【test_api.py】中的路径

 @pytest.mark.parametrize('data',YamlRead('./test_api.yaml').Yaml_Read())

修改为绝对路径(原因我也不清楚,有知道的小伙伴,麻烦指教下我哈)

@pytest.mark.parametrize('data', YamlRead("/***/***/***/***/Testcase/test_api.yaml").Yaml_Read())

或者

@pytest.mark.parametrize('data', YamlRead(os.getcwd()+'/Testcase/test_api.yaml').Yaml_Read())

然后就可以完美运行了。
9.接下来,要把报告导出来。
学习中。。。待更新

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:40:46  更:2021-09-02 11:41:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 22:31:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码