python接口自动化测试

news2024/9/24 1:26:39

写在前面的话:

  这个是我实际工作中写的项目,主要用来备注和后期查看~~大家可以参考学习,但是请不要用于其他不好的途径~~

准备工作:

         先下载HTMLTestRunner.py

         下载地址:HTMLTestRunner - tungwaiyip's software

         参考:http://www.cnblogs.com/testyao/p/5658200.html

         里面提供写好的适合python3使用的:HTMLTestRunner.py_免费高速下载|百度网盘-分享无限制

         把这个文件放在你安装python的lib目录下(我的在C:\Program Files\Python36\Lib)

一:少量用例,仅生成测试报告        

#############run1.py#############


 1 import unittest
 2 import HTMLTestRunner
 3 import os
 4 
 5 #从文件test_ljj.py加载AddCompany类
 6 from test_case.company.test_getLog import GetLog
 7 
 8 #使用测试套件,添加Case01类里面的test_ case01方法
 9 suite = unittest.TestSuite()
10 suite.addTest(GetLog('test_getLogN'))
11 
12 #{这一段是输出到特定目录下
13 # 父目录:os.path.dirname(所在目录:os.path.dirname(绝对路径:os.path.realpath(__file__)))
14 cur_path = os.path.dirname(os.path.realpath(__file__))  #当前文件所在目录
15 report_path = os.path.join(cur_path, 'report')  #拼接成一个新目录
16 report_abspath = os.path.join(report_path, "result.html")
17 
18 #以字节的方式写入目录下的report.html文件里
19 st = open(report_abspath, 'wb')
20 HTMLTestRunner.HTMLTestRunner(stream = st, title= '公司端接口自动化测试报告').run(suite)
21 #}
22 
23 # 这种方法是直接在控制台输出
24 # runner = unittest.TextTestRunner()
25 # runner.run(suite)

二、执行多条用例,仅生成测试报告

 #############run2.py#############

 1 #coding=utf-8
 2 import unittest
 3 import os
 4 import HTMLTestRunner
 5 
 6 #仅生成测试报告不发送邮件
 7 # 父目录:os.path.dirname(所在目录:os.path.dirname(绝对路径:os.path.realpath(__file__)))
 8 cur_path = os.path.dirname(os.path.realpath(__file__))  #当前文件存在的路径
 9 case_path = os.path.join(cur_path, 'test_case')         #测试case目录
10 report_path = os.path.join(cur_path, 'report')          #测试报告存放目录
11 
12 
13 def all_case():
14     '''第一步:加载所有的测试用例'''
15 
16     # 批量加载iscover方法里面有三个参数:-case_dir:这个是待执行用例的目录-pattern:这个是匹配脚本名称的规则,test*.py意思是匹配test开头的所有脚本-top_level_dir:这个是顶层目录的名称,一般默认等于None就行了。
17     # discover加载到的用例是一个list集合,需要重新写入到一个list对象testcase里,这样就可以用unittest里面的TextTestRunner这里类的run方法去执行。
18 
19     discover = unittest.defaultTestLoader.discover(case_path,
20                                                     pattern="test_ljj*.py",
21                                                     top_level_dir=None)
22     # print(discover)
23     return discover
24 
25 def run_case(all_case):
26     '''第二步:执行所有的用例, 并把结果写入HTML测试报告'''
27 
28     # 测试报告文件路径
29     report_abspath = os.path.join(report_path, "result.html")
30     fp = open(report_abspath, "wb")
31     # 批量执行测试用例三个参数:  --stream:测试报告写入文件的存储区域 --title:测试报告的主题 --description:测试报告的描述
32     runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
33                                            title=u'日本公司端自动化测试报告,测试结果如下:',
34                                            description=u'用例执行情况:')
35 
36     # 调用add_case函数返回值
37     runner.run(all_case)
38     fp.close()
39 
40 if __name__ == "__main__":
41     all_case = all_case()   # 1加载用例
42     run_case(all_case)        # 2执行用例

#############run3.py#############

 1 # -* - coding: UTF-8 -* -
 2 
 3 [email]
 4 smtp_server = smtp.163.com
 5 port = 587
 6 sender = ljjiaoyou@163.com
 7 psw = Aa!23456
 8 receiver = 1628891265@qq.com
 9 
10 [website]
11 host = http://10.95.178.216:8001
12 url = /gulfstream/mis/i18n-apac-mis/company
13 
14 [payload]
15 page =1
16 size = 50
17 locale = zh-CN
18 utc_offset = 480
19 canonical_country_code = JP

 1 # -* - coding: UTF-8 -* -
 2 import os
 3 from backports.configparser import ConfigParser
 4 
 5 cur_path = os.path.dirname(os.path.realpath(__file__))   #获取当前文件所在路径
 6 configPath = os.path.join(cur_path, "cfg.ini")  #拼接出文件路径
 7 conf = ConfigParser()
 8 conf.read(configPath)  #读取配置文件cfg.ini
 9 
10 # 获取指定的section, 指定的option的值
11 smtp_server = conf.get("email", "smtp_server")
12 sender = conf.get("email", "sender")
13 psw = conf.get("email", "psw")
14 receiver = conf.get("email", "receiver")
15 port = conf.get("email", "port")
16 
17 host = conf.get("website", "host")
18 url = conf.get("website", "url")
19 
20 # 读取该section下的所有值,并以键值对形式输出。格式为list
21 payload1 = conf.items("payload")
22 payload = dict(payload1)

 1 #coding=utf-8
 2 import unittest
 3 import os
 4 import HTMLTestRunner
 5 import smtplib
 6 from email.mime.text import MIMEText
 7 from email.mime.multipart import MIMEMultipart
 8 
 9 # 父目录:os.path.dirname(所在目录:os.path.dirname(绝对路径:os.path.realpath(__file__)))
10 cur_path = os.path.dirname(os.path.realpath(__file__))  #当前文件存在的路径
11 case_path = os.path.join(cur_path, 'test_case')         #测试case目录
12 report_path = os.path.join(cur_path, 'report')          #测试报告存放目录
13 
14 def send_mail(sender, psw, receiver, smtpserver, port):
15     '''第三步:发送最新的测试报告内容'''
16     file_path = report_path + r"\result.html"
17     with open(file_path, "rb") as f:
18         mail_body = f.read()
19 
20     # 定义邮件内容
21     msg = MIMEMultipart()
22     msg['Subject'] = u"就是想测试下看看能不能收到邮件"  #主题
23     msg["from"] = sender     #发件人
24     msg["to"] = receiver      #收件人
25 
26     #正文
27     body = MIMEText(mail_body, _subtype='html', _charset='utf-8')
28     msg.attach(body)
29 
30     # 添加附件
31     att = MIMEText(mail_body, "base64", "utf-8")
32     att["Content-Type"] = "application/octet-stream"
33     att["Content-Disposition"] = 'attachment; filename= "report.html"'
34     msg.attach(att)
35 
36     try:
37         smtp = smtplib.SMTP_SSL(smtpserver, port)   #QQ邮箱
38     except:
39         smtp = smtplib.SMTP()                       #163邮箱
40         smtp.connect(smtpserver, port)              #链接服务器
41     # 用户名密码
42     smtp.login(sender, psw)                         #登录
43     smtp.sendmail(sender, receiver, msg.as_string())#发送
44     smtp.quit()                                     #关闭
45     print('test report email has send out !')
46 
47 
48 if __name__ == "__main__":
49     # 读取邮箱配置
50     from config import readConfig
51     sender = readConfig.sender
52     psw = readConfig.psw
53     smtp_server = readConfig.smtp_server
54     port = readConfig.port
55     receiver = readConfig.receiver
56     send_mail(sender, psw, receiver, smtp_server, port)  # 发送报告

四、想把执行case和发邮件放在一起的话,把run2.py和run3.py合并即可

         参考:https://www.cnblogs.com/yoyoketang/p/7259993.html

         #############run4.py#############

 1 #coding=utf-8
 2 import unittest
 3 import os
 4 import HTMLTestRunner
 5 import smtplib
 6 from email.mime.text import MIMEText
 7 from email.mime.multipart import MIMEMultipart
 8 
 9 # 父目录:os.path.dirname(所在目录:os.path.dirname(绝对路径:os.path.realpath(__file__)))
10 cur_path = os.path.dirname(os.path.realpath(__file__))  #当前文件存在的路径
11 case_path = os.path.join(cur_path, 'test_case')         #测试case目录
12 report_path = os.path.join(cur_path, 'report')          #测试报告存放目录
13 
14 def all_case():
15     '''第一步:加载所有的测试用例'''
16 
17     # 批量加载iscover方法里面有三个参数:-case_dir:这个是待执行用例的目录-pattern:这个是匹配脚本名称的规则,test*.py意思是匹配test开头的所有脚本-top_level_dir:这个是顶层目录的名称,一般默认等于None就行了。
18     # discover加载到的用例是一个list集合,需要重新写入到一个list对象testcase里,这样就可以用unittest里面的TextTestRunner这里类的run方法去执行。
19 
20     discover = unittest.defaultTestLoader.discover(case_path,
21                                                     pattern="test_lj*.py",
22                                                     top_level_dir=None)
23     # print(discover)
24     return discover
25 
26 # def run_case():
27 def run_case(all_case):
28     '''第二步:执行所有的用例, 并把结果写入HTML测试报告'''
29     # 测试报告文件路径
30     report_abspath = os.path.join(report_path, "result.html")
31     fp = open(report_abspath, "wb")
32     # 批量执行测试用例三个参数:  --stream:测试报告写入文件的存储区域 --title:测试报告的主题 --description:测试报告的描述
33     runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
34                                            title=u'日本公司端自动化测试报告,测试结果如下:',
35                                            description=u'用例执行情况:')
36 
37     # 调用add_case函数返回值
38     runner.run(all_case)
39     fp.close()
40 
41 def send_mail(sender, psw, receiver, smtpserver, port):
42     '''第三步:发送最新的测试报告内容'''
43     file_path = report_path + r"\result.html"
44     with open(file_path, "rb") as f:
45         mail_body = f.read()
46 
47     # 定义邮件内容
48     msg = MIMEMultipart()
49     msg['Subject'] = u"就是想测试下看看能不能收到邮件"  #主题
50     msg["from"] = sender     #发件人
51     msg["to"] = receiver      #收件人
52 
53     #正文
54     body = MIMEText(mail_body, _subtype='html', _charset='utf-8')
55     msg.attach(body)
56 
57     # 添加附件
58     att = MIMEText(mail_body, "base64", "utf-8")
59     att["Content-Type"] = "application/octet-stream"
60     att["Content-Disposition"] = 'attachment; filename= "report.html"'
61     msg.attach(att)
62 
63     try:
64         smtp = smtplib.SMTP_SSL(smtpserver, port)   #QQ邮箱
65     except:
66         smtp = smtplib.SMTP()                       #163邮箱
67         smtp.connect(smtpserver, port)              #链接服务器
68     # 用户名密码
69     smtp.login(sender, psw)                         #登录
70     smtp.sendmail(sender, receiver, msg.as_string())#发送
71     smtp.quit()                                     #关闭
72     print('test report email has send out !')
73 
74 if __name__ == "__main__":
75     all_case = all_case()   # 1加载用例
76     # 生成测试报告的路径
77     run_case(all_case)        # 2执行用例
78     # 邮箱配置
79     from config import readConfig
80     sender = readConfig.sender
81     psw = readConfig.psw
82     smtp_server = readConfig.smtp_server
83     port = readConfig.port
84     receiver = readConfig.receiver
85     send_mail(sender, psw, receiver, smtp_server, port)  # 发送报告

六、项目文件分布图
 

Python接口自动化测试零基础入门到精通(2023最新版)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1141085.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

框架安全-CVE 复现SpringStrutsLaravelThinkPHP漏洞复现

目录 服务攻防-框架安全&CVE 复现&Spring&Struts&Laravel&ThinkPHP概述PHP-开发框架安全-Thinkphp&Laravel漏洞复现Thinkphp-3.X RCEThinkphp-5.X RCELaravel框架安全问题- CVE-2021-3129 RCE JAVAWEB-开发框架安全-Spring&Struts2Struts2框架安全…

【MATLAB源码-第59期】基于matlab的QPSK,16QAM164QAM等调制方式误码率对比,调制解调函数均是手动实现未调用内置函数。

操作环境: MATLAB 2022a 1、算法描述 正交幅度调制(QAM,Quadrature Amplitude Modulation)是一种在两个正交载波上进行幅度调制的调制方式。这两个载波通常是相位差为90度(π/2)的正弦波,因此…

Python中的*args 和 **kwargs

在Python中的代码中经常会见到这两个词 args 和 kwargs,前面通常还会加上一个或者两个星号。其实这只是编程人员约定的变量名字,args 是 arguments 的缩写,表示位置参数;kwargs 是 keyword arguments 的缩写,表示关键字…

【优选算法系列】第一节.双指针(283. 移动零和1089. 复写零)

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:优选算法系列 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!&#xff01…

暄桐推荐|学书法的必读书目

在暄桐教室,写字之外,读书、静坐也是桐学们修习的功课。今天,便向你推荐,关于学习书法,暄桐教室的那些必读书目:    暄桐推荐学书法必读书之初阶书目:      对零基础的小白同学或刚入门…

VSCode远程连接

1 VSCode 远程连接服务器 1、下载vscode 百度搜索vscode(注意不是visual studio),进入vscode官网进行下载。 2、安装ssh插件 根据你的操作系统选择对应的版本进行下载和安装。 安装完成之后,启动vscode,选择左侧Exten…

使用 Visual Studio Code 编写 TypeScript程序

安装 TypeScript 首先,确保你已经安装了 TypeScript,如果没有安装,请参考https://blog.csdn.net/David_house/article/details/134077973?spm1001.2014.3001.5502进行安装 创建 新建一个文件夹,用vs code打开,在文…

SpringBoot 集成 kaptcha 验证码

简介 这里就一句话说明了哈,并能找到这里,都是知道这个是要干嘛的了。kaptcha 是谷歌开源的简单实用的验证码生成工具。 项目源码 项目工程源码路径,点击这里, 可以结合源码来看。 项目搭建 项目工程截图 第一步:…

vue使用Element-plus的Image预览时样式崩乱

🔥博客主页: 破浪前进 🔖系列专栏: Vue、React、PHP ❤️感谢大家点赞👍收藏⭐评论✍️ 问题: 在使用组件库的image时出现了点小问题,预览的图片层级反而没有表格的层级高 效果图:…

FL Studio21最新中文汉化解锁版,2024怎么激活FL Studio

FL Studio2024最新中文汉化解锁版是一款功能强大的数字音频工作站(DAW),它广泛应用于音乐创作和音乐制作领域。在使用FL Studio时,购买正版软件是否有必要呢?本文将详细探讨FL Studio的功能特点以及正版软件的重要性。…

【C++那些事儿】内联函数,auto,以及C++中的空指针nullptr

君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,我之前看过一套书叫做《明朝那些事儿》,把本来枯燥的历史讲的生动有趣。而C作为一门接近底层的语言,无疑是抽象且难度颇…

【电路笔记】-电路中的复数与相量(Phasor)

电路中的复数与相量(Phasor) 文章目录 电路中的复数与相量(Phasor)1、概述2、复数定义3、复数计算规则4、电子领域的复数5、总结 复数是一种重要的数学工具,广泛应用于包括电子学在内的许多物理领域。 这个概念可能看起来很奇怪,但它们的操作很简单&…

鸡尾酒学习——薄荷夏日

1、材料:冰块(或者雪莲)、牛奶、朗姆酒、绿薄荷糖浆; 2、口感:有点像是再吃薄荷奶糖口味的酒心奶糖。 3、视觉效果:白色加上一点点绿色; 4、步骤: (1)向摇壶内…

如何使用react-router v6快速搭建路由?

前言 之前一直使用react-router V5,上次搭建一个小项目,下载的react-router V6, 本以为没什么区别,就按照v5的那一套用了,区区小功能,奈何不了我的。然后自信满满的运行,哦豁,不生效…

foo = foo || bar 的深入解析

目录 前言 用法 代码示例 理解 注意点 结论 前言 在JavaScript中,foo foo || bar 是一种常见的编程模式,用于设置变量的默认值或者确保变量被赋值。这种写法利用了JavaScript中逻辑运算符的短路特性,即在逻辑运算中,一旦结…

docker - window Docker Desktop升级

文章目录 前言docker - window Docker Desktop升级 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来…

通过el-tree 懒加载树,创建国家地区四级树

全国四级行政地区树数据库sql下载路径:【免费】全国四级地区(省市县)数据表sql资源-CSDN文库https://download.csdn.net/download/weixin_51722520/88469807?spm1001.2014.3001.5503 我在后台获取地区信息添加了限制,只获取parentid为当前的地…

使用 jdbc 技术升级水果库存系统(后端最终版本,不包含前端)

1、配置依赖 <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.10</version></dependency><dependency><groupId>junit</groupId><…

释放搜索潜力:基于ES(ElasticSearch)打造高效的语义搜索系统,让信息尽在掌握[1.安装部署篇--简洁版],支持Linux/Windows部署安装

搜索推荐系统专栏简介&#xff1a;搜索推荐全流程讲解&#xff08;召回粗排精排重排混排&#xff09;、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战&#xff08;含码源&#xff09; 专栏详细介绍&#xff1a;搜索推荐系统专栏简介&#xff1a;搜索推荐全流程讲…

基于springboot零食商城管理系统

功能如图所示 摘要 这基于Spring Boot的零食商城管理系统提供了强大的购物车和订单管理功能。用户可以在系统中浏览零食产品&#xff0c;并将它们添加到购物车中。购物车可以保存用户的选购商品&#xff0c;允许随时查看已选择的商品和它们的数量。一旦用户满意&#xff0c;他们…