山西威力网站建设推荐wordpress订阅关闭
web/
2025/10/2 12:28:34/
文章来源:
山西威力网站建设推荐,wordpress订阅关闭,工厂办公室装修设计,seo网站代码优化首先配置好开发环境#xff0c;下载安装Python并下载安装pycharm#xff0c;在pycharm中创建项目功能目录。如果不会的可以百度Google一下#xff0c;该内容网上的讲解还是比较多比较全的#xff01; 大家可以先简单了解下该项目的目录结构介绍#xff0c;后面会针对每个文…首先配置好开发环境下载安装Python并下载安装pycharm在pycharm中创建项目功能目录。如果不会的可以百度Google一下该内容网上的讲解还是比较多比较全的 大家可以先简单了解下该项目的目录结构介绍后面会针对每个文件有详细注解和代码。
common
——configDb.py这个文件主要编写数据库连接池的相关内容本项目暂未考虑使用数据库来存储读取数据此文件可忽略或者不创建。本人是留着以后如果有相关操作时方便使用。
——configEmail.py这个文件主要是配置发送邮件的主题、正文等将测试报告发送并抄送到相关人邮箱的逻辑。
——configHttp.py这个文件主要来通过get、post、put、delete等方法来进行http请求并拿到请求响应。
——HTMLTestRunner.py主要是生成测试报告相关
——Log.py调用该类的方法用来打印生成日志
result:
——logs生成的日志文件
——report.html生成的测试报告
testCase:
——test01case.py读取userCase.xlsx中的用例使用unittest来进行断言校验
testFile/case:
——userCase.xlsx对下面test_api.py接口服务里的接口设计了三条简单的测试用例如参数为null参数不正确等
caselist.txt配置将要执行testCase目录下的哪些用例文件前加#代表不进行执行。当项目过于庞大用例足够多的时候我们可以通过这个开关来确定本次执行哪些接口的哪些用例。
config.ini数据库、邮箱、接口等的配置项用于方便的调用读取。
getpathInfo.py获取项目绝对路径
geturlParams.py获取接口的URL、参数、method等
readConfig.py读取配置文件的方法并返回文件中内容
readExcel.py读取Excel的方法
runAll.py开始执行接口自动化项目工程部署完毕后直接运行该文件即可
test_api.py自己写的提供本地测试的接口服务
test_sql.py测试数据库连接池的文件本次项目未用到数据库可以忽略
二、PythonunittestrequestsHTMLTestRunner完整的接口自动化测试框架搭建_01——测试接口服务
首先我们想搭建一个接口自动化测试框架前提我们必须要有一个可支持测试的接口服务。有人可能会说现在我们的环境不管测试环境还是生产环境有现成的接口。但是一般工作环境中的接口不太满足我们框架的各种条件。举例如接口a可能是get接口b可能又是post等等等等。因此我决定自己写一个简单的接口用于我们这个框架的测试
按第一讲的目录创建好文件打开test_api.py写入如下代码
import flask
import json
from flask import request
flask web框架通过flask提供的装饰器server.route()将普通函数转换为服# 创建一个服务把当前这个python文件当做一个服务
server flask.Flask(__name__)
# server.route()可以将普通函数转变为服务 登录接口的路径、请求方式
server.route(/login, methods[get, post])
def login():# 获取通过url请求传参的数据username request.values.get(name)# 获取url请求传的密码明文pwd request.values.get(pwd)# 判断用户名、密码都不为空if username and pwd:if username xiaoming and pwd 111:resu {code: 200, message: 登录成功}return json.dumps(resu, ensure_asciiFalse) # 将字典转换字符串else:resu {code: -1, message: 账号密码错误}return json.dumps(resu, ensure_asciiFalse)else:resu {code: 10001, message: 参数不能为空}return json.dumps(resu, ensure_asciiFalse)if __name__ __main__:server.run(debugTrue, port8888, host127.0.0.1)
执行test_api.py在浏览器中输入http://127.0.0.1:8888/login?namexiaomingpwd11199回车验证我们的接口服务是否正常~ 变更我们的参数查看不同的响应结果确认接口服务一切正常 三、PythonunittestrequestsHTMLTestRunner完整的接口自动化测试框架搭建_02——配置文件读取
在我们第二讲中我们已经通过flask这个web框架创建好了我们用于测试的接口服务因此我们可以把这个接口抽出来一些参数放到配置文件然后通过一个读取配置文件的方法方便后续的使用。同样还有邮件的相关配置~
按第一讲的目录创建好config.ini文件打开该文件写入如下
# -*- coding: utf-8 -*-
[HTTP]
scheme http
baseurl 127.0.0.1
port 8888
timeout 10.0[EMAIL]
on_off on;
subject 接口自动化测试报告
app Outlook
addressee songxiaobaoqq.com
cc zhaobenshanqq.com在HTTP中协议httpbaseURL端口超时时间。
在邮件中on_off是设置的一个开关on打开发送邮件其他不发送邮件。subject邮件主题addressee收件人cc抄送人。
在我们编写readConfig.py文件前我们先写一个获取项目某路径下某文件绝对路径的一个方法。按第一讲的目录结构创建好getpathInfo.py打开该文件
import osdef get_Path():path os.path.split(os.path.realpath(__file__))[0]return pathif __name__ __main__:# 执行该文件测试下是否OKprint(测试路径是否OK,路径为, get_Path())填写如上代码并执行后查看输出结果打印出了该项目的绝对路径 继续往下走同理按第一讲目录创建好readConfig.py文件打开该文件以后的章节不在累赘
import os
import configparser
import getpathInfo#引入我们自己的写的获取路径的类path getpathInfo.get_Path()#调用实例化还记得这个类返回的路径为C:\Users\songlihui\PycharmProjects\dkxinterfaceTest
config_path os.path.join(path, config.ini)#这句话是在path路径下再加一级最后变成C:\Users\songlihui\PycharmProjects\dkxinterfaceTest\config.ini
config configparser.ConfigParser()#调用外部的读取配置文件的方法
config.read(config_path, encodingutf-8)class ReadConfig():def get_http(self, name):value config.get(HTTP, name)return valuedef get_email(self, name):value config.get(EMAIL, name)return valuedef get_mysql(self, name):#写好留以后备用。但是因为我们没有对数据库的操作所以这个可以屏蔽掉value config.get(DATABASE, name)return valueif __name__ __main__:#测试一下我们读取配置文件的方法是否可用print(HTTP中的baseurl值为, ReadConfig().get_http(baseurl))print(EMAIL中的开关on_off值为, ReadConfig().get_email(on_off))
执行下readConfig.py查看数据是否正确 一切OK
四、PythonunittestrequestsHTMLTestRunner完整的接口自动化测试框架搭建_03——读取Excel中的case
配置文件写好了接口我们也有了然后我们来根据我们的接口设计我们简单的几条用例。首先在前两讲中我们写了一个我们测试的接口服务针对这个接口服务存在三种情况的校验。正确的用户名和密码账号密码错误和账号密码为空 我们根据上面的三种情况将对这个接口的用例写在一个对应的单独文件中testFile\case\userCase.xlsx userCase.xlsx内容如下 紧接着我们有了用例设计的Excel了我们要对这个Excel进行数据的读取操作继续往下我们创建readExcel.py文件
import os
import getpathInfo# 自己定义的内部类该类返回项目的绝对路径
#调用读Excel的第三方库xlrd
from xlrd import open_workbook
# 拿到该项目所在的绝对路径
path getpathInfo.get_Path()class readExcel():def get_xls(self, xls_name, sheet_name):# xls_name填写用例的Excel名称 sheet_name该Excel的sheet名称cls []# 获取用例文件路径xlsPath os.path.join(path, testFile, case, xls_name)file open_workbook(xlsPath)# 打开用例Excelsheet file.sheet_by_name(sheet_name)#获得打开Excel的sheet# 获取这个sheet内容行数nrows sheet.nrowsfor i in range(nrows):#根据行数做循环if sheet.row_values(i)[0] ! ucase_name:#如果这个Excel的这个sheet的第i行的第一列不等于case_name那么我们把这行的数据添加到cls[]cls.append(sheet.row_values(i))return cls
if __name__ __main__:#我们执行该文件测试一下是否可以正确获取Excel中的值print(readExcel().get_xls(userCase.xlsx, login))print(readExcel().get_xls(userCase.xlsx, login)[0][1])print(readExcel().get_xls(userCase.xlsx, login)[1][2])
结果为 完全正确~
五、PythonunittestrequestsHTMLTestRunner完整的接口自动化测试框架搭建_04——requests请求配置文件有了读取配置文件有了用例有了读取用例有了我们的接口服务有了我们是不是该写对某个接口进行http请求了这时候我们需要使用pip install requests来安装第三方库在common下configHttp.pyconfigHttp.py的内容如下 import requests
import jsonclass RunMain():def send_post(self, url, data): # 定义一个方法传入需要的参数url和data# 参数必须按照url、data顺序传入result requests.post(urlurl, datadata).json() # 因为这里要封装post方法所以这里的url和data值不能写死res json.dumps(result, ensure_asciiFalse, sort_keysTrue, indent2)return resdef send_get(self, url, data):result requests.get(urlurl, paramsdata).json()res json.dumps(result, ensure_asciiFalse, sort_keysTrue, indent2)return resdef run_main(self, method, urlNone, dataNone): # 定义一个run_main函数通过传过来的method来进行不同的get或post请求result Noneif method post:result self.send_post(url, data)elif method get:result self.send_get(url, data)else:print(method值错误)return resultif __name__ __main__: # 通过写死参数来验证我们写的请求是否正确result1 RunMain().run_main(post, http://127.0.0.1:8888/login, {name: xiaoming,pwd:111})result2 RunMain().run_main(get, http://127.0.0.1:8888/login, namexiaomingpwd111)print(result1)print(result2)
执行该文件验证结果正确性 我们发现和浏览器中进行请求该接口得到的结果一致说明没有问题一切OK
六、PythonunittestrequestsHTMLTestRunner完整的接口自动化测试框架搭建_05——参数动态化
在上一讲中我们写了针对我们的接口服务设计的三种测试用例使用写死的参数result RunMain().run_main(post, http://127.0.0.1:8888/login, namexiaomingpwd)来进行requests请求。本讲中我们写一个类来用于分别获取这些参数来第一讲的目录创建geturlParams.pygeturlParams.py文件中的内容如下
import readConfig as readConfigreadconfig readConfig.ReadConfig()class geturlParams():# 定义一个方法将从配置文件中读取的进行拼接def get_Url(self):new_url readconfig.get_http(scheme) :// readconfig.get_http(baseurl) :8888 /login ?#logger.info(new_urlnew_url)return new_urlif __name__ __main__:# 验证拼接后的正确性print(geturlParams().get_Url())通过将配置文件中的进行拼接拼接后的结果http://127.0.0.1:8888/login?和我们请求的一致 【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】 一、Python编程入门到精通
二、接口自动化项目实战 三、Web自动化项目实战
四、App自动化项目实战 五、一线大厂简历
六、测试开发DevOps体系 七、常用自动化测试工具
八、JMeter性能测试 九、总结尾部小惊喜
生命不息奋斗不止。每一份努力都不会被辜负只要坚持不懈终究会有回报。珍惜时间追求梦想。不忘初心砥砺前行。你的未来由你掌握
生命短暂时间宝贵我们无法预知未来会发生什么但我们可以掌握当下。珍惜每一天努力奋斗让自己变得更加强大和优秀。坚定信念执着追求成功终将属于你
只有不断地挑战自己才能不断地超越自己。坚持追求梦想勇敢前行你就会发现奋斗的过程是如此美好而值得。相信自己你一定可以做到
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85611.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!