unittest和pytest

devtools/2024/11/17 4:37:55/

unittest终端运行方法
ecshop_login.py

import unittestclass EcshopLoginTest(unittest.TestCase):def test01_baidu(self):print("百度")def test01_bytedance(self):print("字节跳动")

终端运行
python -m unittest ecshop_login.EcshopLoginTest -v

python -m unittest -v ecshop_login.EcshopLoginTest -k *_bytedance

python -m unittest -v ecshop_login.EcshopLoginTest -k dance

python ecshop_login.py

用例执行顺序
按ASCII码的规则【0-9 A-Z a-z】

ecshop_login.py

import unittestclass EcshopLoginTest(unittest.TestCase):def test01_baidu(self):print("百度")def test01_bytedance(self):print("字节跳动")def test11_alibaba(self):print("阿里巴巴")
if __name__ == '__main__':unittest.main()

输出顺序:百度 字节跳动 阿里巴巴

ecshop_login.py

import os
import unittest
class EcshopLoginTest(unittest.TestCase):def test1_baidu(self):print("百度")def test2_bytedance(self):print("字节跳动")def test11_alibaba(self):print("阿里巴巴")if __name__ == '__main__':print("++++++++++++++++++++++++++")suite = unittest.TestSuite()testcase = unittest.defaultTestLoader.discover(start_dir=os.getcwd(), pattern='ecshop*.py')suite.addTests(testcase)unittest.main(defaultTest='suite')#输出阿里巴巴 百度 字节跳动

ecshop_login.py

import unittest
class EcshopLoginTest(unittest.TestCase):def test1_baidu(self):print("百度")def test2_bytedance(self):print("字节跳动")def test11_alibaba(self):print("阿里巴巴")if __name__ == '__main__':suite = unittest.TestSuite()testcase = [EcshopLoginTest("test1_baidu")]suite.addTests(testcase)unittest.main(defaultTest='suite')
#输出百度

ecshop_login.py

import unittest
class EcshopLoginTest(unittest.TestCase):def test1_baidu(self):print("百度")def test2_bytedance(self):print("字节跳动")def test11_alibaba(self):print("阿里巴巴")if __name__ == '__main__':suite = unittest.TestSuite()suite.addTest(EcshopLoginTest('test1_baidu'))suite.addTest(EcshopLoginTest('test2_bytedance'))unittest.main(defaultTest='suite')  #unittest.TextTestRunner().run(suite)
#输出百度 字节跳动

Json格式
yaml_test.yaml

-大厂: [{name: '阿里巴巴'},{name: '字节跳动'},{name: '美团'}]大公司: [{name: '百度'},{name: '腾讯'},{name: '京东'}]

yaml_util.py

import yamlclass YamlUtilTest:def __init__(self,yaml_path):self.yaml_path = yaml_pathdef read_yaml(self):with open(self.yaml_path,encoding='utf-8') as f:yaml_data = yaml.load(stream=f.read(),Loader=yaml.FullLoader)return yaml_dataif __name__ == '__main__':yaml_util = YamlUtilTest('yaml_test.yaml').read_yaml()print(yaml_util)#输出[{'大厂': [{'name': '阿里巴巴'}, {'name': '字节跳动'}, {'name': '美团'}], '大公司': [{'name': '百度'}, {'name': '腾讯'}, {'name': '京东'}]}]

yaml_test.yaml

-name: 获取接口统一鉴权码token接口request:method: GETurl: https://api.weixin.qq.com/cgi-bin/tokendata:grant type: client_credentialappid: wx6b11b3efd1cdc290secret: 106a9c6157c4db5f6029918738f9529dvalidate:- equals: {status code: 200}- contains: access token

gzh_case.py

import requests
from ddt import file_data, ddt@ddt
class GzhTestCase(unittest.TestCase):@file_data('yaml_test.yaml')def test_get_token(self,**kwargs):if 'name' in kwargs.keys() and 'request' in kwargs.keys() and 'validate' in kwargs.keys():if jsonpath.jsonpath(kwargs,'$..url') and jsonpath.jsonpath(kwargs,'$..data') and jsonpath.jsonpath(kwargs,'$..method'):res = requests.get(url=kwargs['request']['url'],params=kwargs['request']['data'])print("res的值是:",res.json())print("validate",kwargs['validate'])for validate_data in kwargs['validate']:print("validate_data:",validate_data)for key,value in validate_data.items():print('key=',key,'value=',value)if key == 'equals':passelif key == 'contains':if value in res.text:print("断言通过")else:print("断言失败",'value=',value)else:print("关键字不包含url或data或method")else:print("关键字必须包含name,request,validate")if __name__ == '__main__':unittest.main()

只运行test_login.py:
test_login.py

import pytestclass TestLogin:def test_login(self):print('-----test_login')if __name__ == '__main__':pytest.main()

方法一:终端运行pytest test_login.py
方法二:新建all.py并运行

all.py如下:

import pytestif __name__ == '__main__':pytest.main(['test_login.py'])

pytest测试用例的运行方式
1.主函数模式
(1)运行所有:pytest.main()
(2)指定模块:pytest.main([‘test_login.py’])
(3)指定目录:pytest.main([‘./interface_testcase’])
(4)指定方法:pytest.main([‘./interface_testcase/test_interface.py::test_01’])
2.命令行模式:
(1)运行所有:pytest
(2)指定模块:pytest test_login.py
(3)指定目录:pytest ./interface_testcase
(4)指定方法:pytest ./interface_testcase/test_interface.py::test_01


http://www.ppmy.cn/devtools/134617.html

相关文章

2:Vue.js 父子组件通信:让你的组件“说话”

上一篇我们聊了如何用 Vue.js 创建一个简单的组件,这次咱们再往前走一步,讲讲 Vue.js 的父子组件通信。组件开发里,最重要的就是让组件之间能够“说话”,数据能流通起来。废话不多说,直接开干! 父组件传数据…

蓝桥杯——杨辉三角

代码 package day3;public class Demo2 {public static void main(String[] args) {// TODO Auto-generated method stub// for (int i 0; i < 10; i) {// for (int j 0; j < 10; j) {// System.out.print("外&#xff1a;"i"内&#xff1a;&qu…

【计算机网络】设备网卡NIC的工作内容有哪些呢?

我们平时上网&#xff0c;都需要经过设备网卡的处理&#xff0c;网络接口卡&#xff08;Network Interface Card&#xff0c;简称 NIC&#xff09;是计算机与网络之间的物理连接设备&#xff0c;负责处理网络数据的发送和接收。NIC 的功能涵盖了从物理层到数据链路层的多个方面…

leetcode21. Merge Two Sorted Lists

You are given the heads of two sorted linked lists list1 and list2. Merge the two lists into one sorted list. The list should be made by splicing together the nodes of the first two lists. Return the head of the merged linked list. 将两个升序链表合并为一…

ffmpeg视频编码

一、视频编码流程 使用ffmpeg解码视频帧主要可分为两大步骤&#xff1a;初始化编码器和编码视频帧&#xff0c;以下代码以h264为例 1. 初始化编码器 初始化编码器包含以下步骤&#xff1a; &#xff08;1&#xff09;查找编码器 videoCodec avcodec_find_encoder_by_name…

千益畅行,共享旅游新时代的璀璨之星与未来前景展望

在当今数字化和共享经济蓬勃发展的时代&#xff0c;旅游业也正经历着前所未有的变革。千益畅行共享旅游卡作为旅游行业创新模式的代表&#xff0c;正逐渐崭露头角。在这篇文章中&#xff0c;我们将深入剖析共享旅游卡的未来发展前景&#xff0c;并对未来旅游市场进行深度解读&a…

Elasticsearch 查看磁盘占用 查看指定索引磁盘占用

Elasticsearch 查看磁盘占用 查看指定索引磁盘占用 查看磁盘占用查看指定索引磁盘占用查看节点线程情况查询异步任务执行情况其他操作 考虑到既然数据要放在 es 中&#xff0c;那么相应的数据量往往都不会小&#xff0c;那么在对这些数据进行大批量的变动时&#xff0c;带来的磁…

matlab学习笔记:第三章课后习题

练习题1. &#xff08;1&#xff09; 生成一个6行3列的随机矩阵A&#xff0c;矩阵中每个元素都是位于区间[50,100]之间的随 机整数&#xff0c;下面我们假设矩阵A的每一行代表一名学生&#xff0c;这六名同学的三门科目的 成绩对应着三列&#xff1b; &#xff08;2&#x…