基于Python,jenkins+pytest+allure+selenium项目实战

基于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(
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值