def Perform(self): """ 增删改查操作,返回单个字段和记录 :return: {"key": "value"} """ db = self.connect_db() cursor = db.cursor() environment = operate_excel.get_palce(self.case_num, self.case_name)['db'] version = db.server_version Log().info('成功登录%s环境数据库:%s,版本为:%s,执行SQL:%s' % (environment, self.database, version, self.sql)) if "SELECT" in self.sql or "select" in self.sql: try: cursor.execute(self.sql) results = cursor.fetchall() Log().info('查询结果:%s' % results[0][0]) return results[0][0] except: Log().info("Error: unable to fetch data") raise elif "UPDATE" in self.sql or "update" in self.sql: try: cursor.execute(self.sql) db.commit() Log().info("更新数据成功") except: db.rollback() Log().info("Error:Has been rolled back") raise db.close()
def more_perform(self): """ 增删改查操作,返回多个字段和记录 :return: [{"key1": "value1", "key2", "value2"},{"key1": "value1", "key2", "value2"} ....] """ db = self.connect_db() cursor = db.cursor() environment = operate_excel.get_palce(self.case_num, self.case_name)['db'] version = db.server_version Log().info('成功登录%s环境数据库:%s,版本为:%s,执行SQL:%s' % (environment, self.database, version, self.sql)) try: cursor.execute(self.sql) results = cursor.fetchall() Log().info('sql查询结果:{0}'.format(results)) sql1 = self.sql.replace(' ', '') find_keys = re.findall("^select(.+?)from", sql1) keys = find_keys[0].split(",") list_result = [] for i in results: for num in range(len(i)): dict_result = {} dict_result[keys[num]] = i[num] list_result.append(dict_result) if len(results) == 1: return dict_result elif len(results) > 1: return list_result except: Log().info("Error: unable to fetch data") raise db.close()
def testCase3(self, id=17): """消息通知成功""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_one = operate_excel.change(asserexpect=data_test['expect1']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'], key=data_test['key'], param=data_test['param'], way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['param'], data_test['way'])) apijson2 = json.loads(apijson) actual_one = apijson2["isSuccess"] msg = apijson2["count"] try: self.assertEqual(int(expect_one['isSuccess']), actual_one, msg='预期和返回不一致') Log().info('对【isSuccess】断言,断言结果--预期值%s == 实际值%s,收到%s条消息' % (expect_one['isSuccess'], actual_one, msg)) except: Log().warning('对【isSuccess】断言,断言结果--预期值%s != 实际值%s' % (expect_one['isSuccess'], actual_one)) raise
def Send_dingding(cases, fail_case, fail_result): url = "https://oapi.dingtalk.com/robot/send?access_token=7b7bfd8536388cd11d8fe6dbafa43dacdfd889451f83f9206bac7b5ceada6dc4" # url为机器人的webhook header = { "Content-Type": "application/json", "Charset": "UTF-8" } try: content = "{0}\n" \ "{1}\n" \ "功能模块:达人圈、订单交易、地址管理、购物车、个人中心操作\n" \ "执行过程:\n" \ "1.达人圈-发布达人圈,请求接口publishNote,对返回的isSuccess和msg字段断言\n" \ "2.达人圈-获取发布内容,请求接口getUserPublish,对返回的content和noteid字段断言\n" \ "3.达人圈-点赞内容,请求接口like,对返回的isSuccess和like_num字段断言\n" \ "4.达人圈-收藏内容,请求接口collection,对返回的isSuccess和collect_num字段断言\n" \ "失败用例名称:{2}\n" \ "请登录http://47.99.83.80:8881/jenkins/job/interface_online/HTML_20Report/ 查看详细报告,账密admin/showjoy@123".format(cases, fail_case, fail_result) data = { "msgtype": "text", "text": { "content": content } } sendData = json.dumps(data) sendData = sendData.encode("utf-8") request = requests.post(url=url, data=sendData, headers=header) opener = urllib.request.urlopen(request) Log().info('钉钉通知成功{0}'.format(opener.read())) except: Log().info('钉钉通知失败') raise
def Perform(self): # 使用cursor()方法获取操作游标 self.db = self.connect_db() self.cursor = self.db.cursor() sql = self.get_sql() version = self.db.server_version Log().info('成功登录数据库:%s,版本为:%s,执行SQL:%s' % (self.getdb, version, sql)) if "SELECT" in sql or "select" in sql: try: self.cursor.execute(sql) results = self.cursor.fetchall() Log().info('查询结果:%s' % results[0][0]) return results[0][0] except: Log().info("Error: unable to fetch data") raise elif "UPDATE" in sql or "update" in sql: try: self.cursor.execute(sql) self.db.commit() Log().info("更新成功") except: self.db.rollback() Log().info("Error:Has been rolled back") raise self.db.close()
def get_param(self): if self.place != 'database': return self.param else: #获取数据库名 self.database = Getyaml(yamlparam="interface_db", interface=self.url).port_db() Log().info('当前接口涉及数据库:%s' % self.database) #执行数据库操作 post_data = Operate_db(self.database, self.url).Perform() Log().info('数据格式为:%s' % post_data) return post_data
def click_msg(self): """获取验证码""" url2 = '/api/shop/login/getLoginCode?tel=18069425303' try: r = requests.get(url=self.url1 + url2, cookies=self.cookies, headers=self.headers) r.encoding = 'UTF-8' response_text = r.text response_text1 = json.loads(response_text)['msg'] Log().info('get请求发送验证码,验证码发送{0}'.format(response_text1)) sleep(5) except Exception as e: Log().error('get请求出错,出错原因:%s' % e) return {'code': 1, 'result': 'get请求出错,出错原因:%s' % e}
def Login(self): """APP接口--登录用户""" # self.click_msg() # msg = Operate_redis().connect() url2 = '/api/shop/shopLogin?tel=18069425303&code=123456' try: r = requests.get(url=self.url1+url2, cookies=self.cookies, headers=self.headers) r.encoding = 'UTF-8' response_text = r.text response_text1 = json.loads(response_text)['data']['token'] Log().info('18069425303用户开始登录,返回登录信息{0}'.format(response_text1)) return response_text1 except Exception as e: Log().error('get请求出错,出错原因:%s' % e) return {'code': 1, 'result': 'get请求出错,出错原因:%s' % e}
def select_user(self): """APP接口--多个账号,选择一个账号登录""" url3 = '/api/shop/login/selectUser' data = {'tel': '18069425303', 'userId': '10474262', 'token': self.Login(), 'isShop': 'false'} try: session = requests.Session() r = session.post(url=self.url1+url3, cookies=self.cookies, headers=self.headers, data=data) r.encoding = 'UTF-8' cookie = requests.utils.dict_from_cookiejar(session.cookies) umbrella_token = cookie['umbrella_token'] Log().info('18069425303登录成功,返回token<{0}>'.format(umbrella_token)) return umbrella_token except Exception as e: Log().error('get请求出错,出错原因:%s' % e) return {'code': 1, 'result': 'get请求出错,出错原因:%s' % e} # Lg_in().select_user()
def data(case_name='liguo'): """ 将列表转换成字典,以便于取值,也可用于ddt数驱 :param a: 用例序号1,2,3... :return: 字典 """ path = file_path + "/" + "case_{0}.xlsx".format(case_name) list_id, list_module, list_name, list_key, list_param, list_place, list_url, list_way, list_expect1, \ list_expect2, list_expect3, list_expect4=readexcel(path) make_data1 = [] try: for i in range(len(list_id)): make_data1.append({ 'id': list_id[i], 'module': list_module[i], 'url': list_url[i], 'name': list_name[i], 'key': list_key[i], 'param': list_param[i], 'place': list_place[i], 'way': list_way[i], 'expect1': list_expect1[i], 'expect2': list_expect2[i], 'expect3': list_expect3[i], 'expect4': list_expect4[i] }) i += 1 return make_data1 except: Log().error('打开测试用例失败,原因是:%s' % Exception)
def readexcel(filepath): """ 读取xlsx文件,将每列的数据保存到list里 """ try: file = xlrd.open_workbook(filepath) first_line = file.sheets()[0] lines = first_line.nrows list_id = [] list_name = [] list_key = [] list_param = [] list_place = [] list_url = [] list_way = [] list_expect1 = [] list_expect2 = [] for i in range(1, lines): list_id.append(first_line.cell(i, 0).value) list_name.append(first_line.cell(i, 1).value) list_key.append(first_line.cell(i, 2).value) list_param.append(first_line.cell(i, 3).value) list_place.append(first_line.cell(i, 4).value) list_url.append(first_line.cell(i, 5).value) list_way.append((first_line.cell(i, 6).value)) list_expect1.append((first_line.cell(i, 7).value)) list_expect2.append((first_line.cell(i, 8).value)) return list_id, list_name, list_key, list_param, list_place, list_url, list_way, list_expect1, list_expect2 except: Log().error('打开测试用例失败,原因是:%s' % Exception)
def testCase7(self, id=10): """发送订单退款通知""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_one = operate_excel.change(asserexpect=data_test['expect1']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'], key=data_test['key'], param=data_test['param'], way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['param'], data_test['way'])) apijson2 = json.loads(apijson) actual_one = apijson2["data"][0]["content"] try: self.assertEqual(expect_one['content'], actual_one, msg='预期和返回不一致') Log().info('对支付成功消息【content】断言,断言结果--预期值%s == 实际值%s' % (expect_one['content'], actual_one)) except: Log().warning('对支付成功消息【content】断言,断言结果--预期值%s != 实际值%s' % (expect_one['content'], actual_one)) raise
def testCase5(self, id=4): """订单详情收益和上级佣金""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_one = operate_excel.change(asserexpect=data_test['expect1']) expect_two = operate_excel.change(asserexpect=data_test['expect2']) expect_three = operate_excel.change(asserexpect=data_test['expect3']) expect_four = operate_excel.change(asserexpect=data_test['expect4']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'].format(actual), key=data_test['key'], param=data_test['param'], way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'].format(actual), data_test['key'], data_test['param'], data_test['way'])) apijson1 = json.loads(apijson) actual_one = apijson1["data"]["tradePageInfoVO"]["orderDirectCommission"] sql = operate_excel.get_palce(case_num=id, case_name=MyTest.name)['sql'] actual_com = operate_db.Operate_db(case_num=id, sql=sql, case_name=MyTest.name).more_perform() actual_two = str(decimal.Decimal(actual_com[0]['commission'])) actual_three = str(decimal.Decimal(actual_com[1]['commission'])) actual_four = str(decimal.Decimal(actual_com[2]['commission'])) try: self.assertEqual(float(expect_one['orderDirectCommission']), actual_one, msg='预期和返回不一致') Log().info('对详情页【收益】断言,断言结果--预期值%s == 实际值%s' % (expect_one['orderDirectCommission'], actual_one)) except: Log().warning('对详情页【收益】断言,断言结果--预期值%s != 实际值%s' % (expect_one['orderDirectCommission'], actual_one)) raise finally: try: self.assertEqual(expect_two['invite'], actual_two, msg='预期和返回不一致') Log().info('对邀请人【佣金】断言,断言结果--支付成功预期值%s == 实际值%s' % (expect_two['invite'], actual_two)) except: Log().warning('对邀请人【佣金】断言,断言结果--支付成功预期值%s != 实际值%s' % (expect_two['invite'], actual_two)) raise finally: try: self.assertEqual(expect_three['guwen'], actual_three, msg='预期和返回不一致') Log().info('对客户代表/营销顾问【佣金】断言,断言结果--支付成功预期值%s == 实际值%s' % (expect_three['guwen'], actual_three)) except: Log().warning('对客户代表/营销顾问【佣金】断言,断言结果--支付成功预期值%s != 实际值%s' % (expect_three['guwen'], actual_three)) raise finally: try: self.assertEqual(expect_four['jinli'], actual_four, msg='预期和返回不一致') Log().info('对市场经理【佣金】断言,断言结果--支付成功预期值%s == 实际值%s' % (expect_four['jinli'], actual_four)) except: Log().warning('对市场经理【佣金】断言,断言结果--支付成功预期值%s != 实际值%s' % (expect_four['jinli'], actual_four)) raise
def connect(self): con_info = Getyaml().get_redis(env=self.env) try: r = redis.Redis(host=con_info[0], port=con_info[1], password=con_info[2], db=0) data1 = str(r.hget(name='showjoy_login_captcha_cache:{0}'.format(self.name), key='15868147451'), encoding = "utf8") data2 = data1.replace("false", "0") data3 = json.loads(data2.replace("true", "0")) data = data3['code'] Log().info('查询结果:{0}'.format(data)) return data except: Log().info('查询redis失败') raise # Operate_redis().connect() # sql2 = "select sum(collect_num),sum(like_num),sum(share_num) from interaction_info where note_id in (select note_id from note_info_shadow where user_id = '9140391') or note_id in (select id from note_info where user_id = '9140391')" # Operate_db(24,sql2).more_perform()
def testCase4(self, id=3): """发送支付成功和收益到账通知""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_one = operate_excel.change(asserexpect=data_test['expect1']) expect_two = operate_excel.change(asserexpect=data_test['expect2']) expect_three = operate_excel.change(asserexpect=data_test['expect3']) expect_four = operate_excel.change(asserexpect=data_test['expect4']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'], key=data_test['key'], param=data_test['param'], way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['param'], data_test['way'])) apijson2 = json.loads(apijson) actual_str1 = apijson2["data"][1]["content"] actual_one = json.loads(actual_str1)["title"] actual_two = json.loads(actual_str1)["messageSubLines"][0]["content"] actual_str2 = apijson2["data"][0]["content"] actual_three = json.loads(actual_str2)["title"] actual_four = json.loads(actual_str2)["messageSubLines"][0]["content"] try: self.assertEqual(expect_one['title'], actual_one, msg='预期和返回不一致') Log().info('对支付成功消息【title】断言,断言结果--预期值%s == 实际值%s' % (expect_one['title'], actual_one)) except: Log().warning('对支付成功消息【title】断言,断言结果--预期值%s != 实际值%s' % (expect_one['title'], actual_one)) raise finally: try: self.assertEqual(expect_two['content'], actual_two, msg='预期和返回不一致') Log().info('对支付成功消息【金额】断言,断言结果--支付成功预期值%s == 实际值%s' % (expect_two['content'], actual_two)) except: Log().warning('对支付成功消息【金额】断言,断言结果--支付成功预期值%s != 实际值%s' % (expect_two['content'], actual_two)) raise finally: try: self.assertEqual(expect_three['title'], actual_three, msg='预期和返回不一致') Log().info('对收益到账消息【title】断言,断言结果--支付成功预期值%s == 实际值%s' % (expect_three['title'], actual_three)) except: Log().warning('对收益到账消息【title】断言,断言结果--支付成功预期值%s != 实际值%s' % (expect_three['title'], actual_three)) raise finally: try: self.assertEqual(expect_four['content'], actual_four, msg='预期和返回不一致') Log().info('对收益到账消息【金额】断言,断言结果--支付成功预期值%s == 实际值%s' % (expect_four['content'], actual_four)) except: Log().warning('对收益到账消息【金额】断言,断言结果--支付成功预期值%s != 实际值%s' % (expect_four['content'], actual_four)) raise
def testCase4(self, id=22): """删除购物车商品""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_one = operate_excel.change(asserexpect=data_test['expect1']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'], key=data_test['key'], param=data_test['param'], way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['param'], data_test['way'])) apijson1 = apijson.replace('false', '"false"') apijson2 = apijson1.replace('true', '"true"') apijson3 = json.loads(apijson2) actual_one = apijson3["data"]["itemList"] try: self.assertEqual(int(expect_one['itemList']), len(actual_one), msg='预期和返回不一致') Log().info('对【购物车商品】断言,断言结果--预期值%s == 实际值%s' % (expect_one['itemList'], len(actual_one))) except: Log().warning('对【购物车商品】断言,断言结果--预期值%s != 实际值%s' % (expect_one['itemList'], len(actual_one))) raise
def testCase1(self, id=19): """商品加入购物车""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_one = operate_excel.change(asserexpect=data_test['expect1']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'], key=data_test['key'], param=data_test['param'], way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['param'], data_test['way'])) apijson2 = json.loads(apijson) actual_one = apijson2["data"] try: self.assertEqual(int(expect_one['data']), actual_one, msg='预期和返回不一致') Log().info('成功加入购物车,对【data】断言,断言结果--预期值%s == 实际值%s' % (expect_one['data'], actual_one)) except: Log().warning('成功加入购物车,对【data】断言,断言结果--预期值%s != 实际值%s' % (expect_one['data'], actual_one)) raise else: Log().info('第1条断言成功')
def testCase3(self, id=37): """设置默认地址""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_one = operate_excel.change(asserexpect=data_test['expect1']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'].format(address_id1), key=data_test['key'], param=data_test['param'], way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'].format(address_id1), data_test['key'], data_test['param'], data_test['way'])) apijson1 = json.loads(apijson) global address_id address_id = apijson1["data"]["addresses"][0]["id"] actual_one = apijson1["data"]["addresses"][0]["isDefault"] try: self.assertEqual(expect_one['isDefault'], str(actual_one), msg='预期和返回不一致') Log().info('地址【%s】是否为默认地址,断言结果--预期值%s == 实际值%s' % (address_id, expect_one['isDefault'], actual_one)) except: Log().warning('地址【%s】是否为默认地址,断言结果--预期值%s != 实际值%s' % (address_id, expect_one['isDefault'], actual_one)) raise
def connect_db(self): """ 连接数据库 :return:连接信息 """ data = Getyaml().get_data(self.case_num, self.case_name) self.database = operate_excel.get_palce(self.case_num, self.case_name)['database'] db1 = pymysql.connect(data[0], data[1], data[2],self.database ,charset='utf8') Log().info("连接数据库成功") return db1
def change(asserexpect): """ 变更期望值格式 """ if len(asserexpect.split('=')) > 1: data = asserexpect.split('&') #['code=4001'] result = dict([(item.split('=')) for item in data]) #{'code': '4001'} return result else: Log().info('填写测试预期值') raise {"code": 1, 'result': '填写测试预期值'}
def testCase4(self, id=38): """编辑地址""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_one = operate_excel.change(asserexpect=data_test['expect1']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'], key=data_test['key'], param=data_test['param'].replace("{0}", str(address_id1)), way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['param'].replace("{0}", str(address_id1)), data_test['way'])) apijson2 = json.loads(apijson) sql = operate_excel.get_palce(case_num=id, case_name=MyTest.name)['sql'] actual_one = operate_db.Operate_db(case_num=id, sql=sql, case_name=MyTest.name).Perform() global address_id2 address_id2 = apijson2["data"] try: self.assertEqual(expect_one['fullName'], actual_one, msg='预期和返回不一致') Log().info('重新生成地址id【%s】,对【fullName】断言,断言结果--预期值%s == 实际值%s' % (address_id2, expect_one['fullName'], actual_one)) except: Log().warning('重新生成地址id【%s】,对【fullName】断言,断言结果--预期值%s != 实际值%s' % (address_id2, expect_one['fullName'], actual_one)) raise
def testCase2(self, id=16): """店铺信息展示""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_one = operate_excel.change(asserexpect=data_test['expect1']) expect_two = operate_excel.change(asserexpect=data_test['expect2']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'], key=data_test['key'], param=data_test['param'], way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['param'], data_test['way'])) apijson2 = json.loads(apijson) actual_one = apijson2["data"]["nick"] actual_two = apijson2["data"]["tel"] try: self.assertEqual(expect_one['nick'], actual_one, msg='预期和返回不一致') Log().info('对【店铺名称】断言,断言结果--预期值%s == 实际值%s' % (expect_one['nick'], actual_one)) except: Log().warning('对【店铺名称】断言,断言结果--预期值%s != 实际值%s' % (expect_one['nick'], actual_one)) raise finally: try: self.assertEqual(expect_two['tel'], actual_two, msg='预期和返回不一致') Log().info('对【店铺手机号】断言,断言结果--预期值%s == 实际值%s' % (expect_two['tel'], actual_two)) except: Log().warning('对【店铺手机号】断言,断言结果--预期值%s != 实际值%s' % (expect_two['tel'], actual_two)) raise
def testCase5(self, id=39): """删除地址""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_one = operate_excel.change(asserexpect=data_test['expect1']) expect_two = operate_excel.change(asserexpect=data_test['expect2']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'], key=data_test['key'], param=data_test['param'].replace("{0}", str(address_id2)), way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['param'], data_test['way'])) apijson1 = json.loads(apijson) actual_one = apijson1["isSuccess"] sleep(1) sql = operate_excel.get_palce(case_num=id)['sql'].format(address_id2) actual_two = operate_db.Operate_db(case_num=id, sql=sql, case_name=MyTest.name).Perform() try: self.assertEqual(int(expect_one['isSuccess']), actual_one, msg='预期和返回不一致') Log().info('对【isSuccess】断言,断言结果--预期值%s == 实际值%s' % (expect_one['isSuccess'], actual_one)) except: Log().warning('对【isSuccess】断言,断言结果--预期值%s != 实际值%s' % (expect_one['isSuccess'], actual_one)) raise finally: try: self.assertEqual(int(expect_two['COUNT(*)']), actual_two, msg='预期和返回不一致') Log().info('对【删除结果数】断言,断言结果--预期值%s == 实际值%s' % (expect_two['COUNT(*)'], actual_two)) except: Log().warning('对【删除结果数】断言,断言结果--预期值%s != 实际值%s' % (expect_two['COUNT(*)'], actual_two)) raise
def testCase1(self, id=35): """新增地址""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_one = operate_excel.change(asserexpect=data_test['expect1']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'], key=data_test['key'], param=data_test['param'], way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['param'], data_test['way'])) apijson2 = json.loads(apijson) actual_one = apijson2["isSuccess"] global address_id1 address_id1 = apijson2["data"] actual_two = address_id1 sql = operate_excel.get_palce(case_num=id, case_name=MyTest.name)['sql'] expect_two = operate_db.Operate_db(case_num=id, sql=sql, case_name=MyTest.name).Perform() try: self.assertEqual(int(expect_one['isSuccess']), actual_one, msg='预期和返回不一致') Log().info('对【isSuccess】断言,断言结果--预期值%s == 实际值%s' % (expect_one['isSuccess'], actual_one)) except: Log().warning('对【isSuccess】断言,断言结果--预期值%s != 实际值%s' % (expect_one['isSuccess'], actual_one)) raise finally: try: self.assertEqual(expect_two, actual_two, msg='预期和返回不一致') Log().info('对【地址id】断言,断言结果--预期值%s == 实际值%s' % (expect_two, actual_two)) except: Log().warning('对【地址id】断言,断言结果--预期值%s != 实际值%s' % (expect_two, actual_two)) raise
def testCase1(self, id=0): """确认订单信息""" data_test = operate_excel.data(case_name=MyTest.name)[id] #从Excel获取第1条测试用例 expect_one = operate_excel.change(asserexpect=data_test['expect1']) #获取期望值1,从Excel获取 expect_two = operate_excel.change(asserexpect=data_test['expect2']) #获取期望值2,从Excel获取 Log().info('获取用例数据:%s' % data_test) # 接口请求,得到响应体 apijson = TestApi(url2=data_test['url'], key=data_test['key'], param=data_test['param'], way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['param'], data_test['way'])) #接口返回的false和true无法解析,先替换为0 apijson1 = apijson.replace('false', '"false"') apijson2 = apijson1.replace('true', '"true"') apijson3 = json.loads(apijson2) #json转化成字典 actual_one = apijson3['data']['totalPrice'] #获取实际值1,从响应体获取 actual_two = apijson3['data']['items'][id]['itemZhName'] #获取实际值2,从响应体获取 # 期望值1和实际值1进行对比校验 try: self.assertEqual(float(expect_one['totalPrice']), actual_one, msg='预期和返回不一致') Log().info('对【商品价格】断言,断言结果--预期值%s == 实际值%s' % (expect_one['totalPrice'], actual_one)) except: Log().warning('对【商品价格】断言,断言结果--预期值%s != 实际值%s' % (expect_one['totalPrice'], actual_one)) raise finally: #期望值2和实际值2进行对比校验 try: self.assertEqual(expect_two['itemZhName'], actual_two, msg='预期和返回不一致') Log().info('对【商品名称】断言,断言结果--预期值%s == 实际值%s' % (expect_two['itemZhName'], actual_two)) except: Log().warning('对【商品名称】断言,断言结果--预期值%s != 实际值%s' % (expect_two, actual_two)) raise
def testCase6(self, id=9): """订单取消成功""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_one = operate_excel.change(asserexpect=data_test['expect1']) expect_two = operate_excel.change(asserexpect=data_test['expect2']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'].format(actual), key=data_test['key'], param=data_test['param'], way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['param'], data_test['way'])) apijson2 = json.loads(apijson) actual_one = apijson2["isSuccess"] sql = operate_excel.get_palce(case_num=id, case_name=MyTest.name)['sql'].format(actual) sleep(1) actual_two = operate_db.Operate_db(case_num=id, sql=sql, case_name=MyTest.name).Perform() try: self.assertEqual(int(expect_one['isSuccess']), actual_one, msg='预期和返回不一致') Log().info('对【订购结果】断言,断言结果--预期值%s == 实际值%s' % (expect_one['isSuccess'], actual_one)) except: Log().warning('对【订购结果】断言,断言结果--预期值%s != 实际值%s' % (expect_one['isSuccess'], actual_one)) raise finally: try: self.assertEqual(int(expect_two['tradestatus']), actual_two, msg='预期和返回不一致') Log().info('对【订单状态】断言,断言结果--支付成功预期值%s == 实际值%s' % (expect_two['tradestatus'], actual_two)) except: Log().warning('对【订单状态】断言,断言结果--支付成功预期值%s != 实际值%s' % (expect_two['tradestatus'], actual_two)) raise
def testCase10(self, id=16): """优惠劵抵扣订单金额确认""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_one = operate_excel.change(asserexpect=data_test['expect1']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'].format(actual_couponid), key=data_test['key'], param=data_test['param'], way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['param'], data_test['way'])) apijson1 = json.loads(apijson) actual_one = apijson1['data']['itemsTotalPrice'] expect_totalPrice = float( expect_one['itemsTotalPrice']) - actual_couponworth actual_totalPrice = actual_one - actual_couponworth if expect_totalPrice == actual_totalPrice: Log().info('抵扣优惠卷金额正确:预期值%s == 实际值%s' % (expect_totalPrice, actual_totalPrice)) else: Log().warning('抵扣优惠卷金额不正确:预期值%s != 实际值%s' % (expect_totalPrice, actual_totalPrice)) try: self.assertEqual(int(expect_one['itemsTotalPrice']), actual_one, msg='预期和返回不一致') Log().info('对【订单金额】断言,断言结果--预期值%s == 实际值%s' % (int(expect_one['itemsTotalPrice']), actual_one)) except: Log().warning('对【订单金额】断言,断言结果--预期值%s == 实际值%s' % (int(expect_one['itemsTotalPrice']), actual_one)) raise
def testCase2(self, id=1): """提交订单成功未支付""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_two = operate_excel.change(asserexpect=data_test['expect2']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'], key=data_test['key'], param=data_test['param'], way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['param'], data_test['way'])) apijson1 =json.loads(apijson) global actual actual = apijson1["data"]["orderNumber"] sql = operate_excel.get_palce(case_num=id, case_name=MyTest.name)['sql'].format(actual) actual_two = operate_db.Operate_db(case_num=id, sql=sql, case_name=MyTest.name).Perform() try: self.assertIsNotNone(actual, msg='实际值不存在') Log().info('对【订单号】断言,生成订单号%s' % (actual)) except: Log().warning('对【订单号】断言,订单号生成失败') raise finally: try: self.assertEqual(int(expect_two['tradestatus']), actual_two, msg='预期和返回不一致') Log().info('对【订单状态】断言,断言结果--预期值%s == 实际值%s' % (expect_two['tradestatus'], actual_two)) except: Log().warning('对【订单状态】断言,断言结果--预期值%s != 实际值%s' % (expect_two['tradestatus'], actual_two)) raise
def testCase2(self, id=20): """查看购物车信息""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_one = operate_excel.change(asserexpect=data_test['expect1']) expect_two = operate_excel.change(asserexpect=data_test['expect2']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'], key=data_test['key'], param=data_test['param'], way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['param'], data_test['way'])) apijson1 = apijson.replace('false', '"false"') apijson2 = apijson1.replace('true', '"true"') apijson3 = json.loads(apijson2) actual_one = apijson3["data"]["itemList"][0]["name"] actual_two = apijson3["data"]["itemList"][0]["price"] try: self.assertEqual(expect_one['name'], actual_one, msg='预期和返回不一致') Log().info('对【商品名称】断言,断言结果--预期值%s == 实际值%s' % (expect_one['name'], actual_one)) except: Log().warning('对【商品名称】断言,断言结果--预期值%s != 实际值%s' % (expect_one['name'], actual_one)) raise finally: try: self.assertEqual(float(expect_two['price']), actual_two, msg='预期和返回不一致') Log().info('对【商品价格】断言,断言结果--预期值%s == 实际值%s' % (expect_two['price'], actual_two)) except: Log().warning('对【商品价格】断言,断言结果--预期值%s != 实际值%s' % (expect_two['price'], actual_two)) raise
def testCase2(self, id=36): """查看地址""" data_test = operate_excel.data(case_name=MyTest.name)[id] expect_two = operate_excel.change(asserexpect=data_test['expect2']) Log().info('获取用例数据:%s' % data_test) apijson = TestApi(url2=data_test['url'], key=data_test['key'], param=data_test['param'], way=data_test['way']).selectway() Log().info('请求传入数据:url:%s,key:%s,参数:%s,请求方式:%s' % (data_test['url'], data_test['key'], data_test['param'], data_test['way'])) apijson1 = json.loads(apijson) actual_one = apijson1["data"]["addresses"][-1]["id"] actual_two = apijson1["data"]["addresses"][-1]["isDefault"] try: self.assertEqual(int(address_id1), actual_one, msg='预期和返回不一致') Log().info('对【地址id】断言,断言结果--预期值%s == 实际值%s' % (address_id1, actual_one)) except: Log().warning('对【地址id】断言,断言结果--预期值%s != 实际值%s' % (address_id1, actual_one)) raise finally: try: self.assertEqual(expect_two['isDefault'], str(actual_two), msg='预期和返回不一致') Log().info('对【是否为默认地址】断言,断言结果--预期值%s == 实际值%s' % (expect_two['isDefault'], actual_two)) except: Log().warning('对【是否为默认地址】断言,断言结果--预期值%s != 实际值%s' % (expect_two['isDefault'], actual_two)) raise