基于Python,jenkins+pytest+allure+selenium项目实战
小宝快满月了,但是本人找工作不顺利,有点困惑。记录一下自己做过的项目,前端时间一直在学Java,不然时间久了我都以为自己真啥也不会了。小菜鸟,继续努力吧。哎~难啊
进入正题
case存放测试用例
common存放一些工具类
data数据配置化目录
filed_pic当用例失败时截图,用于排查问题
logs日志目录
otc_api封装requests方法
pages封装业务类
业务流程是,输入客票->选择服务->创建订单->支付订单,完成整个测试流程
1、出票直接获取票池无法确定票是否有效,所以每次执行用例之前都需要做数据准备,循环出票
auto_tiket.py
from common.tiket_pool import Tiket_Pool
from common.issue_tiket import Issue_Tiket
from common.mythread import myThread
from common.log import Log
import json,queue,threading
from common.read_yml import ReadYaml
testelement = ReadYaml("tiket_data.yml").get_yaml_data()
set_readyaml=ReadYaml("data.yml")
url=testelement['tiket_url']
header=testelement["header"]
change_flight=testelement['change_flight']
maxnum=testelement['maxnum']
class Auto_Tiket():
log = Log()
issue_tiket = Issue_Tiket()
tiket_pool = Tiket_Pool()
threadList = ['线程1', '线程2', '线程3']
threadID = 1
threads = []
datalist = []
all_tiket = []
true_list=[]
queueLock = threading.Lock()
workQueue = queue.Queue(10)
exitFlag=0
trueNum=0
trueFlag=False
firstget=1
# 循环出票方法
def send_issue_tiket(self,n):
for i in range(n):
flights = self.issue_tiket.inside_flights_guest(i)
merge = self.issue_tiket.guest_a()
merge.setdefault("flights", flights)
if merge['flights'][0]['orderFlightNo'] != '3533' or merge['flights'][0]['arrCity'] != 'SHA':
merge['flights'][0]['orderFlightNo'] = "3533"
merge['flights'][0]['arrCity'] = 'SHA'
# 单线程
# self.first_send(i, merge)
# else:
#单线程
# self.first_send(i, merge)
# 多线程出票
data = json.dumps(merge)
self.datalist.append(data)
self.changeFlight(i)
# 每次循环首次请求时调用
def first_send(self,i, merge):
data = json.dumps(merge)
try:
resp = self.issue_tiket.post_send(url, data=data, headers=header)
if resp.status_code != 200:
raise self.log.error("出票接口异常")
elif resp.json()['success'] != True:
self.log.error("出票失败")
self.changeFlight(i)
else:
self.changeFlight(i)
except:
self.log.error("出票接口报错,请检查参数或网络")
# 旧版更换航班方法
def changeFlight1(self,i):
n = 0
while 1:
try:
flights = self.issue_tiket.inside_flights_guest(i)
merge = self.issue_tiket.guest_a()
change_flight = testelement['change_flight{}'.format(n)]
merge.setdefault("flights", flights)
merge['flights'][0]['orderFlightNo'] = change_flight['orderFlightNo']
merge['flights'][0]['arrCity'] = change_flight['arrCity']
# print(merge)
data = json.dumps(merge)
resp = self.issue_tiket.post_send(url, data=data, headers=header)
n = n + 1
if resp.status_code != 200:
self.log.error("出票接口异常")
break
elif resp.json()['success'] != True:
continue
except:
self.log.info("change_flight循环结束")
break
# 票写入data
def set_yaml(self,get_tiket_pool):
set_readyaml.set_yaml_data(get_tiket_pool)
def get_yaml(self):
return set_readyaml.get_yaml_data()
# 查找符合条件的票,取前5张,找不到票就自动出票,再取前5张
def get_tiket_pool_old(self):
all_tiket = []
date = self.tiket_pool.datelist(2)
for i in self.tiket_pool.urlList():
rp = self.tiket_pool.select_flightDate(i, date[0], date[1])
for i in rp:
# i=int(i)
all_tiket.append(i)
if len(all_tiket):
# print(len(all_tiket))
self.log.info("查询票池,找到符合条件的票:{}".format(all_tiket))
if len(all_tiket) < 5:
self.send_issue_tiket(2)
self.dothread()
else:
data = {
"test_tiket": all_tiket[0:5]}
self.set_yaml(data)
return self.get_yaml()['test_tiket']
else:
self.log.info("没有合适的票,开始自动出票")
self.send_issue_tiket(2)
self.dothread()
self.get_tiket_pool()
# 新版更换航班方法
def get_tiket_pool(self):
self.send_issue_tiket(2)
self.dothread()
date = self.tiket_pool.datelist(2)
for i in self.tiket_pool.urlList(