def test_save_activity(self, kwargs): # 数据统计页面是根据渠道码而非具体活动来统计,所以每个活动尽量要用专门的渠道码,方便排查 channel_code = channel_serv.add_channel_random() # 新建作品排名活动 kwargs = data_pool.supply('project_ranking_data.yml', 'save_activity')[0] kwargs['channelCode'] = channel_code kwargs['activityName'] = fakerist.word() kwargs['howToPlay'] = 2 # 1点赞 2注册 kwargs['chooseStartTime'] = '2020-01-22 00:00:00' kwargs['chooseEndTime'] = '2021-11-22 00:00:00' kwargs['startTime'] = '2021-11-20 00:00:00' kwargs['endTime'] = '2021-12-22 00:00:00' res1 = project_ranking.save_activity(**kwargs) assert res1.status is True # 活动启用 需确保没有其他在进行的活动 # 生产环境要注释 query_latest_id = 'SELECT pa.id FROM mxc_activity.project_activity pa WHERE 1=1 ORDER BY id DESC limit 1' latest_id = mysqler.query(query_latest_id)[0][0] kwargs2 = data_pool.supply("project_ranking_data.yml", 'update_status')[0] kwargs2['id'] = latest_id kwargs2['status'] = 1 # 1启用 0禁用 res2 = project_ranking.update_status(**kwargs2)
class TestCoupon: @pytest.mark.skip @pytest.mark.usefixtures("crm_login_with_mm") @pytest.mark.parametrize("kwargs", data_pool.supply('coupon_data.yml', 'create_coupon_school')) def test_add_coupon_school(self, kwargs): # 下发渠道分别是1,2,3 # 金额分别是直减1011,1012,1013 meet_amount = kwargs['meetamount'] sub_amount = kwargs['subamount'] kwargs['type'] = 'CASH_COUPON' # 现金 kwargs['couponTypeId'] = 53 # 校区直减券_不可叠加 kwargs['couponAmount'] = 1 # 限量1张 kwargs['sendType'] = 1 kwargs['title'] = f'限量2校区-{meet_amount}-{sub_amount}-{fakerist.word()}' res1 = coupon.create_coupon(**kwargs) couponId = res1.sdata.get('id') logger.info(f'第一张的id是{couponId}') assert res1.status is True # @pytest.mark.skip @pytest.mark.usefixtures("crm_login_with_mm") # @pytest.mark.parametrize("kwargs", data_pool.supply('bbc_user_batch.yml', 'h5_query444')) def test_create_coupon_referral(self, kwargs): res1 = coupon_serv.create_coupon_referral() assert res1.status is True
def add_channel_random(): kwargs = data_pool.supply('channel.yml', 'add_channel')[0] fake = "Asctrio" + fakerist.month_name() kwargs['name'] = fake kwargs['code'] = fake res1 = channel.add_channel(**kwargs) return fake
class TestProjectPK: # @pytest.mark.skip @pytest.mark.repeat(1) @pytest.mark.usefixtures("crm_login_with_mm", "h5_login") # @pytest.mark.parametrize("kwargs", data_pool.supply('bbc_user_batch.yml', 'h5_query444')) def test_aaa(self, kwargs): kwargs['identityNo'] = 123 res = user.result_inquiry(**kwargs) prom = res.sdata.get('resultInquiryList')[0].get('promotionResult') logger.info(f'晋级情况={prom}') kwargs8 = data_pool.supply('bbc_submit_paper.yml', 'submit_official_paper')[0] res8 = user.submit_official_paper(**kwargs8) assert res.status is True @pytest.mark.parametrize("datajson", data_pool.supply( 'test_scoring_dimension.yml', 'test_get_scoring_dimension_by_id')) def test_get_scoring_dimension_by_id(self, datajson): echo = project_pk.get_scoring_dimension_by_id(datajson['ssid']).sdata assert echo.get('minPoints') == datajson['minPoints'] and \ echo.get('maxPoints') == datajson['maxPoints'] and \ echo.get('name') == datajson['name'] # 查询评分维度列表-所有 @pytest.mark.skip @pytest.mark.single def test_get_scoring_dimension_list(self): # logger.info("\n*************** 开始执行用例 ***************") result = project_pk.get_scoring_dimension_list() dimension_len = len(result.sdata) assert dimension_len > 0 logger.info(f"评分维度总数 ==>> 期望大于0个, 实际结果:{dimension_len}")
class TestSample: # @allure.story("故事:leadsapi获取token后提交入库") # @allure.description("该用例是针对 leadsapi获取token后提交入库 场景的测试") # @allure.issue("https://www.cnblogs.com/wintest", name="点击,跳转到对应BUG的链接地址") # @allure.testcase("https://www.cnblogs.com/wintest", name="点击,跳转到对应用例的链接地址") # @allure.title("标题:leadsapi获取token后提交入库") # @pytest.mark.single # @pytest.mark.repeat(3) @pytest.mark.usefixtures("crm_login_with_mm", "h5_login") @pytest.mark.parametrize("kwargs", data_pool.supply('leads_api_data.yml', 'upload_info')) def test_sample_get(self, kwargs): # case层可直接调用api层发起请求,请求前可自行修改kwargs任意键的值 kwargs['token'] = 'res_token' result = sample.req_get(kwargs) prom = result.sdata.get('resultInquiryList')[0].get('promotionResult') logger.info('prom的值') assert prom == 4 # case层也能直接调用serv层发起请求 kwargs3 = data_pool.supply('bbc_signup_data.yml', 'create_order')[0] kwargs3['payType'] = "WX" sample_serv.save_match_enable(kwargs3) res3 = sample.request(kwargs3) pay_record_id = res3.sdata.get("payrecordId") out_trade_no = sql_util.sql_payrecordid_to_outtradeno(pay_record_id) assert result.status is True
def order_detail(user_id, goods_id): kwargs1 = data_pool.supply('mxcorder_data.yml', 'order_detail')[0] kwargs1['userId'] = user_id # 18899708134 kwargs1['goodsId'] = goods_id res1 = mxc_order.order_detail(**kwargs1) order_id = res1.sdata.get('id') # 订单ID assert res1.status is True
def demolition_order(user_id, goods_id): kwargs0 = data_pool.supply('goods_order_data.yml', 'demolition_order_omo')[0] kwargs0['userId'] = user_id # 用户的userid kwargs0['goodsIds'] = goods_id # 2元的K2D kwargs0['orderSource'] = 'SCHOOL_ORDER' res0 = goods_order.demolition_order(**kwargs0) assert res0.status is True
def add_omo_leads(phone): kwargs = data_pool.supply('mxcuser_data.yml', 'add_visit_leads')[0] kwargs['childName'] = 'Asc' + fakerist.word() kwargs['phone'] = phone res1 = mxc_user.add_visit_leads(**kwargs) userid = res1.sdata.get('userId') # 4003926 childName = res1.sdata.get('childName') # Asc以及 assert res1.status is True
def test_aaa(self, kwargs): kwargs['identityNo'] = 123 res = user.result_inquiry(**kwargs) prom = res.sdata.get('resultInquiryList')[0].get('promotionResult') logger.info(f'晋级情况={prom}') kwargs8 = data_pool.supply('bbc_submit_paper.yml', 'submit_official_paper')[0] res8 = user.submit_official_paper(**kwargs8) assert res.status is True
def create_coupon_cash_new(): # 运营推给CC kwargs = data_pool.supply('coupon_data.yml', 'create_coupon')[0] kwargs['title'] = '减免金额8' kwargs['subamount'] = '8' kwargs['sendType'] = '1' # 1新签 2续费 res1 = coupon.create_coupon(**kwargs) couponId = logger.log( res1.sdata.get('id')) # 返回优惠券批次id 即yml里的 couponId=4393 assert res1.status is True
def create_coupon_campus(): kwargs = data_pool.supply('coupon_data.yml', 'create_coupon_school')[0] meet_amount = kwargs['meetamount'] sub_amount = kwargs['subamount'] kwargs['sendType'] = 2 kwargs['title'] = f'续费校区-{meet_amount}-{sub_amount}-{fakerist.word()}' res1 = coupon.create_coupon(**kwargs) couponId = res1.sdata.get('id') logger.info(f'第一张的id是{couponId}') assert res1.status is True
def update_coupon(user_id, goods_id, order_id): # 查表获取usercoupon表的id couponIds = sql_util.sql_usercouponid(user_id, goods_id) # 更新订单:绑定优惠券 kwargs = data_pool.supply('goods_order_data.yml', 'update_coupon')[0] kwargs['couponIds'] = couponIds kwargs['orderId'] = order_id kwargs['payStyle'] = 'NATIVE' kwargs['payType'] = 'WX' res1 = goods_order.update_coupon() assert res1.status is True
def save_cmp_nonreg_1(): kwargs = data_pool.supply('project_pk_data.yml', 'save_competition')[0] kwargs['competitionName'] = 'Asc1发现' + fakerist.word() + '' kwargs['openRegistry'] = 0 kwargs['callForPapersStartTime'] = '2021-12-20 00:00:00' kwargs['callForPapersEndTime'] = '2021-12-29 23:59:59' kwargs['promotionStartTime'] = '2021-12-20 00:00:00' kwargs['promotionEndTime'] = '2021-12-29 23:59:59' res = cmpttn_pk.save_competition(**kwargs) cmp_id = res.sdata # 赛事ID if cmp_id is not None: return cmp_id
def test_new_exam_enable(self, kwargs): kwargs['testpaperId'] = 121 # 修改试卷id kwargs['programType'] = 1 # 1 python 0图形化 kwargs['examTypeId'] = 2 # 1 蓝桥杯66 2等级考试 其他 kwargs['startTime'] = time_util.after_min(3) kwargs['endTime'] = "2021-11-15 16:30:00" kwargs['examName'] = '随机2单py' + fakerist.word() + time_util.get_mdhms() res4 = mock_exam.new_exam(**kwargs) exam_id = res4.sdata kwargs5 = data_pool.supply('mock_exam_data.yml', 'enable_exam')[0] kwargs5['id'] = exam_id kwargs5['enable'] = 1 # 启用考试 res5 = mock_exam.enable_exam(**kwargs5) assert res5.status is True
def test_sample_get(self, kwargs): # case层可直接调用api层发起请求,请求前可自行修改kwargs任意键的值 kwargs['token'] = 'res_token' result = sample.req_get(kwargs) prom = result.sdata.get('resultInquiryList')[0].get('promotionResult') logger.info('prom的值') assert prom == 4 # case层也能直接调用serv层发起请求 kwargs3 = data_pool.supply('bbc_signup_data.yml', 'create_order')[0] kwargs3['payType'] = "WX" sample_serv.save_match_enable(kwargs3) res3 = sample.request(kwargs3) pay_record_id = res3.sdata.get("payrecordId") out_trade_no = sql_util.sql_payrecordid_to_outtradeno(pay_record_id) assert result.status is True
class TestLeadsApi: # @allure.story("故事:leadsapi获取token后提交入库") # @allure.description("该用例是针对 leadsapi获取token后提交入库 场景的测试") # @allure.issue("https://www.cnblogs.com/wintest", name="点击,跳转到对应BUG的链接地址") # @allure.testcase("https://www.cnblogs.com/wintest", name="点击,跳转到对应用例的链接地址") # @allure.title("标题:leadsapi获取token后提交入库") @pytest.mark.single @pytest.mark.parametrize("kwargs", data_pool.supply('leads_api_data.yml', 'upload_info')) # @pytest.mark.usefixtures("crm_login_with_mm") def test_upload_info(self, kwargs): result = leads_api.get_token() res_token = result.sdata logger.info(res_token) kwargs['token'] = res_token result = leads_api.upload_info(**kwargs) assert result.status is True
class TestLeadsPay: # @allure.story("故事:leads入库-分配cc-官网下单-支付-成功回调") # @allure.description("该用例是针对 leads入库-分配cc-官网下单-支付-成功回调 场景的测试") # @allure.issue("https://www.cnblogs.com/wintest", name="点击,跳转到对应BUG的链接地址") # @allure.testcase("https://www.cnblogs.com/wintest", name="点击,跳转到对应用例的链接地址") # @allure.title("leads入库分配cc官网下单支付-预期成功") @pytest.mark.skip # @pytest.mark.usefixtures("delete_register_user") @pytest.mark.parametrize("datajson", data_pool.supply('sample_data.yml', 'test_reset_pwd2')) def test_leads_cc_order_pay(self, datajson): # sql_query_cc = "select salerid from activityuser where id = 889" result1 = user.send_sms2(datajson['phone']) if result1.status is True: result2 = user.register(datajson) if result2.status is True: result3 = user.modify_users_owner(datajson['phone']) assert result3.status is True
'SELECT min_points FROM scoring_dimension where id = 3')[0][0] if finvalue == 2: logger.info(finvalue) return result # 保存评分维度-新增 def add_scoring_dimension(self, **kwargs): self.req_method = 'POST' self.req_url = '/core/scoringDimension/saveScoringDimension' self.req_body = kwargs self.req_cookies = { 'JSESSIONID': auth_util.get_cookie('crm'), } result = self.request(method=self.req_method, url=self.req_url, headers=self.req_headers, cookies=self.req_cookies, data=self.req_body) return result project_pk = ProjectPK(common_util.env('DOMAIN_CORE')) if __name__ == '__main__': kwargs = data_pool.supply('project_pk_data.yml', 'add_scoring_dimension')[0] kwargs['name'] = fakerist.word() res1 = project_pk.add_scoring_dimension(**kwargs) assert_util.result_check(res1) assert res1.status is True
class TestBlueBridgeContest: @pytest.mark.repeat(5) # @pytest.mark.parametrize("kwargs", data_pool.supply('bbc_user_batch.yml', 'h5_query444')) # @pytest.mark.parametrize("kwargs", None) def test_result_inquiry(self, kwargs): kwargs_query = dict(identityNo='111', phone='222') kwargs_query['identityNo'] = kwargs['identityNo'] kwargs_query['phone'] = kwargs['phone'] kwargs_query['identityType'] = 'IDCARD' res = bbc_match.result_inquiry(**kwargs_query) # award = res.sdata.get('resultInquiryList')[0].get('winningResults') # logger.info(f'获奖情况={award}') # assert award == kwargs['award'] prom = res.sdata.get('resultInquiryList')[0].get('promotionResult') logger.info(f'晋级情况={prom}') assert prom == kwargs['prom'] @pytest.mark.skip @pytest.mark.parametrize("match_id", [70]) def test_manual_mark(self, match_id): # match_id = 70 # 报名活动ID res = bbc_match.manual_mark(match_id) assert res.status is True # 完整流程,执行前需修改【报名活动id,试卷id,考试id】 # @pytest.mark.skip @pytest.mark.parametrize("kwargs", data_pool.supply('bbc_user_batch.yml', 'user_submit_and_login3')) @pytest.mark.usefixtures("crm_login_with_mm", "h5_login") def test_submit_pay_audit(self, kwargs): match_id = '90' paper_id = '65' exam_id = '89' # res = bbc_serv.sub_pay_audit(kwargs, match_id) res = bbc_serv.sub_pay_audit_login_answer(kwargs, match_id, paper_id, exam_id) assert res.status is True # 提交答卷 @pytest.mark.skip @pytest.mark.parametrize("kwargs", data_pool.supply('bbc_submit_paper.yml', 'submit_official_paper')) def test_submit_official_paper(self, kwargs): res = bbc_match.submit_official_paper(**kwargs) assert res.status is True # 保存作品 @pytest.mark.skip @pytest.mark.parametrize("kwargs", data_pool.supply('bbc_submit_paper.yml', 'save_project_43')) def test_save_project(self, kwargs): res = bbc_match.submit_official_paper(**kwargs) assert res.status is True # 登录考试系统 @pytest.mark.skip @pytest.mark.parametrize("kwargs", data_pool.supply('bbc_user_batch.yml', 'user_submit_and_login2')) def test_exam_login(self, kwargs): kwargs[ 'examId'] = 'e0e684cd-5e9e-476c-89c4-9e99437ebfe8' # 考试id对应的uuid kwargs['identityType'] = 'IDCARD' kwargs['identityNo'] = '371325198509024721' res = bbc_match.exam_login(**kwargs) assert res.status is True # 新增正式考试 @pytest.mark.skip @pytest.mark.parametrize("kwargs", data_pool.supply('bbc_contest_data.yml', 'add_exam_formal_senior')) @pytest.mark.usefixtures("crm_login_with_mm") def test_add_exam_formal_enable(self, kwargs): res = bbc_match.new_exam(**kwargs) assert res.status is True exam_id = res.sdata bbc_match.enable_exam(exam_id) # 新增模拟考试 @pytest.mark.parametrize("kwargs", data_pool.supply('bbc_contest_data.yml', 'add_exam_simu')) @pytest.mark.usefixtures("crm_login_with_mm") def test_add_exam_formal_enable(self, kwargs): kwargs['examName'] = fakerist.word() + fakerist.numerify() kwargs['startTime'] = "2021-11-03 11:32:00" kwargs['testpaperId'] = 79 kwargs['sortWeight'] = 32 res = bbc_match.new_exam(**kwargs) assert res.status is True exam_id = res.sdata bbc_match.enable_exam(exam_id) @pytest.mark.skip @pytest.mark.parametrize("kwargs", data_pool.supply('bbc_signup_data.yml', 'audit_fail')) @pytest.mark.usefixtures("crm_login_with_mm") def test_audit_fail(self, kwargs): res = bbc_signUp.audit(**kwargs) assert res.status is True @pytest.mark.skip @pytest.mark.parametrize("kwargs", data_pool.supply('bbc_signup_data.yml', 'audit_pass')) @pytest.mark.usefixtures("crm_login_with_mm") def test_audit_pass(self, kwargs): res = bbc_signUp.audit(**kwargs) assert res.status is True # 创建单选题题目 @pytest.mark.skip @pytest.mark.parametrize('kwargs', data_pool.supply('bbc_contest_data.yml', 'new_subject_single')) @pytest.mark.usefixtures("crm_login_with_mm") def test_new_subject_single(self, kwargs): res = bbc_match.new_subject(**kwargs) assert res.status is True # 创建多选题题目 @pytest.mark.skip @pytest.mark.parametrize('kwargs', data_pool.supply('bbc_contest_data.yml', 'new_subject_multi')) @pytest.mark.usefixtures("crm_login_with_mm") def test_new_subject_multi(self, kwargs): res = bbc_match.new_subject(**kwargs) assert res.status is True # 创建判断题题目 @pytest.mark.skip @pytest.mark.parametrize('kwargs', data_pool.supply('bbc_contest_data.yml', 'new_subject_judge')) @pytest.mark.usefixtures("crm_login_with_mm") def test_new_subject_judge(self, kwargs): res = bbc_match.new_subject(**kwargs) assert res.status is True # 创建填空题题目 @pytest.mark.skip @pytest.mark.parametrize('kwargs', data_pool.supply('bbc_contest_data.yml', 'new_subject_blank')) @pytest.mark.usefixtures("crm_login_with_mm") def test_new_subject_blank(self, kwargs): res = bbc_match.new_subject(**kwargs) assert res.status is True # 创建编程题题目 @pytest.mark.skip @pytest.mark.parametrize('kwargs', data_pool.supply('bbc_contest_data.yml', 'new_subject_code')) @pytest.mark.usefixtures("crm_login_with_mm") def test_new_subject_code(self, kwargs): res = bbc_match.new_subject(**kwargs) assert res.status is True @pytest.mark.skip @pytest.mark.parametrize("kwargs", data_pool.supply('bbc_signup_data.yml', 'submit_reg_info')) @pytest.mark.usefixtures("crm_login_with_mm", "h5_login") def test_submit_registration_information(self, kwargs): kwargs['matchId'] = '58' phone = kwargs['phone'] userid = sql_util.sql_phone_to_userid(phone) user.reset_pwd(userid) user.login(phone) res = bbc_signUp.submit_registration_information(**kwargs) assert res.status is True signin_id = res.sdata.get('id') logger.info(f"报名ID是{signin_id}") # 将用户的openid设置为iphone12mini上的 sql_util.sql_fix_openid(signin_id) @pytest.mark.usefixtures("crm_login_with_mm") def test_new_knowpoint(self): res = bbc_match.new_knowpoint("abbbccc") assert res.status is True @pytest.mark.usefixtures("crm_login_with_mm") @pytest.mark.parametrize("kwargs", data_pool.supply('bbc_signup_data.yml', 'save_match_1')) def test_save_match_enable(self, kwargs): res = bbc_serv.save_match_enable(kwargs)
self.req_method = 'POST' self.req_url = '/order/orderDetail' self.req_body = kwargs self.req_cookies = { 'JSESSIONID': auth_util.get_cookie('crm'), 'exam_token': auth_util.get_token('bbc', 'exam_token'), } result = self.request( method=self.req_method, url=self.req_url, headers=self.req_headers, cookies=self.req_cookies, data=self.req_body ) assert_util.result_check(result) return result mxc_order = MxcOrder(common_util.env('DOMAIN_GZ') + '/mxcorder') if __name__ == '__main__': kwargs = data_pool.supply('mxcorder_data.yml', 'send_coupon_to_user')[0] kwargs['userId'] = '4003926' # 18899708134 kwargs['couponId'] = '4393' res = mxc_order.send_coupon_to_user(**kwargs) assert res.status is True kwargs1 = data_pool.supply('mxcorder_data.yml', 'order_detail')[0] kwargs['userId'] = '4003926' # 18899708134 kwargs['goodsId'] = '765' res1 = mxc_order.order_detail(**kwargs) order_id = res1.sdata.get('id') # 订单ID assert res1.status is True
def sub_pay_audit_login_answer(kwargs, m_match_id, m_paper_id, m_exam_id): # 报名活动ID match_id = m_match_id # 试卷ID paper_id = m_paper_id # 考试ID,不是考试UUID exam_id = m_exam_id phone = kwargs['phone'] userid = sql_util.sql_phone_to_userid(phone) # user.reset_pwd(userid) user.login(phone) # id_number = kwargs['identityNo'] id_number = fakerist.ssn() kwargs['idNumber'] = id_number kwargs['matchId'] = match_id kwargs['dateOfBirth'] = "2012年08月11日" # TODO kwargs['typeOfCertificate'] = 'IDCARD' # TODO kid_name = fakerist.name() kwargs['participants'] = kid_name kwargs['guardian'] = kid_name + '的男妈妈' kwargs['city'] = fakerist.city() kwargs['mailbox'] = fakerist.email() kwargs['address'] = fakerist.street_address() kwargs['code'] = "123456" # TODO kwargs['areaCode'] = "86" # TODO kwargs['idPhoto'] = "https://competition/files/1625672893591.jpeg" kwargs['gender'] = fakerist.sex() kwargs['province'] = fakerist.province() # 注意在非中文语种下会报错 kwargs['region'] = fakerist.district() kwargs['provinceAndCity'] = f"{kwargs['province']},{kwargs['region']}" kwargs['school'] = fakerist.word() # 提交报名信息 res = bbc_signUp.submit_registration_information(**kwargs) signin_id = res.sdata.get('id') logger.info(f"报名手机号是{phone}, 报名身份证是{id_number}, 报名ID是{signin_id}") # 下单支付-微信 kwargs3 = data_pool.supply('bbc_signup_data.yml', 'create_order')[0] kwargs3['id'] = int(signin_id) # kwargs3['userId'] = userid # kwargs3['payType'] = 'ALI' # fakerist.pay_type() res3 = bbc_signUp.create_order(**kwargs3) # TODO 会导致'prepay_id=null' # 模拟支付回调成功 pay_record_id = res3.sdata.get("payrecordId") out_trade_no = sql_util.sql_payrecordid_to_outtradeno(pay_record_id) goods_order.pay_callback_suc(out_trade_no) # 审核通过 kwargs4 = data_pool.supply('bbc_signup_data.yml', 'audit_pass')[0] kwargs4['enable'] = 1 kwargs4['id'] = signin_id bbc_signUp.audit(**kwargs4) # 用户登录: 身份证-考试id为70 # 将查到的userid保存到 临时的kwargs['userId'] 中用于后续的作品保存和答卷提交 kwargs5 = data_pool.supply('bbc_submit_paper.yml', 'exam_login')[0] exam_uuid = sql_util.sql_examid_to_uuid(exam_id) kwargs5['examId'] = exam_uuid # 考试uuid kwargs5['identityType'] = 'IDCARD' # TODO kwargs5['identityNo'] = id_number kwargs5['phone'] = phone res5 = bbc_match.exam_login(**kwargs5) # # 保存作品 提交试卷的编程题4 # 需要提前修改 subjectId kwargs6 = data_pool.supply('bbc_submit_paper.yml', 'save_project_43')[0] kwargs6['userId'] = userid kwargs6['subjectId'] = '560' kwargs6['examinationId'] = exam_id kwargs6['dataURL'] = "https://9c011017-e2a0-4cd8-86be-4982660c4e85.mxc" res6 = bbc_match.save_project(**kwargs6) assert res6.status is True # # 保存作品 提交试卷的编程题3 kwargs7 = kwargs6 kwargs6['userId'] = userid kwargs7['subjectId'] = '561' kwargs6['examinationId'] = exam_id kwargs7['dataURL'] = "https://e0519ef5-fdc9-4ecf-8129-b8bddcfb3d41.mxc" res7 = bbc_match.save_project(**kwargs7) assert res7.status is True # 提交试卷(非编程题部分) kwargs8 = data_pool.supply('bbc_submit_paper.yml', 'submit_official_paper')[0] # 实际上不是传userid,而是传 报名活动下的该用户自己的报名id kwargs8['userId'] = str(signin_id) kwargs8['examinationId'] = str(exam_id) kwargs8['testPaperId'] = int(paper_id) res8 = bbc_match.submit_official_paper(**kwargs8) # assert res8.status is True f返回false # TODO 找开发改接口,返回data return res8
class TestMockExam: # 新建知识点 # @pytest.mark.skip @pytest.mark.usefixtures("crm_login_with_mm") @pytest.mark.parametrize("kwargs", data_pool.supply('mock_exam_data.yml', 'new_knowpoint')) def test_new_knowpoint(self, kwargs): res = mock_exam.new_knowpoint(**kwargs) assert res.status is True # 新建题目 # @pytest.mark.skip @pytest.mark.usefixtures("crm_login_with_mm") @pytest.mark.parametrize("kwargs", data_pool.supply('mock_exam_data.yml', 'new_subject_scratch')) def test_new_subject(self, kwargs): kwargs['subDescribe'] = '随图形' + fakerist.word() + time_util.get_mdhms() kwargs['degree'] = 0 kwargs['programType'] = 0 # 1 python 0图形化 kwargs['examTypeId'] = 2 # 1 蓝桥杯66 2等级考试 kwargs['knowledgePointId'] = 593 res2 = mock_exam.new_subject(**kwargs) assert res2.status is True # 新建试卷 # @pytest.mark.skip @pytest.mark.usefixtures("crm_login_with_mm") @pytest.mark.parametrize("kwargs", data_pool.supply('mock_exam_data.yml', 'new_paper_complex')) def test_new_paper(self, kwargs): kwargs['programType'] = 0 # 1 python 0图形化 kwargs['examTypeId'] = 2 # 1 蓝桥杯66 2等级考试 kwargs['name'] = '图形等级考1357102030' + fakerist.word() res3 = mock_exam.new_paper(**kwargs) assert res3.status is True # 新增考试 # @pytest.mark.skip @pytest.mark.usefixtures("crm_login_with_mm") @pytest.mark.parametrize("kwargs", data_pool.supply('mock_exam_data.yml', 'new_exam')) def test_new_exam_enable(self, kwargs): kwargs['testpaperId'] = 121 # 修改试卷id kwargs['programType'] = 1 # 1 python 0图形化 kwargs['examTypeId'] = 2 # 1 蓝桥杯66 2等级考试 其他 kwargs['startTime'] = time_util.after_min(3) kwargs['endTime'] = "2021-11-15 16:30:00" kwargs['examName'] = '随机2单py' + fakerist.word() + time_util.get_mdhms() res4 = mock_exam.new_exam(**kwargs) exam_id = res4.sdata kwargs5 = data_pool.supply('mock_exam_data.yml', 'enable_exam')[0] kwargs5['id'] = exam_id kwargs5['enable'] = 1 # 启用考试 res5 = mock_exam.enable_exam(**kwargs5) assert res5.status is True
from util import assert_util from util import auth_util from util import common_util from util.data_util import data_pool class GroupBuy(BaseRequest): def __init__(self, api_root_url, **kwargs): super(GroupBuy, self).__init__(api_root_url, **kwargs) def add_activity(self, **kwargs): self.req_method = 'POST' self.req_url = '/core/group_buy/add_activity' self.req_body = kwargs self.req_cookies = { 'JSESSIONID': auth_util.get_cookie('crm'), } result = self.request(method=self.req_method, url=self.req_url, cookies=self.req_cookies, data=self.req_body) assert_util.result_check(result) return result group_buy = GroupBuy(common_util.env('DOMAIN_CORE')) if __name__ == '__main__': kwargs = data_pool.supply('group_buy_data.yml', 'add_activity_2')[0] group_buy.add_activity(**kwargs)
result = self.x_request() assert_util.result_check(result) return result # 撤回审核操作 # id=1658&retrievedReason=2 # data为null def retrieve_audit(self, **kwargs): self.req_method = 'POST' self.req_url = '/core/mxc/clk-clock-audit/retrieve' self.req_body = kwargs self.req_cookies = { 'token': auth_util.get_token( 'web', 'gz_token'), # api_token_1553151F52226FFBF1AF1343FBD8F4E5 } result = self.request(method=self.req_method, url=self.req_url, headers=self.req_headers, cookies=self.req_cookies, data=self.req_body) assert_util.result_check(result) return result clk_clock_audit = ClkClockAudit(common_util.env('DOMAIN_CORE')) if __name__ == '__main__': kwargs = data_pool.supply('xxx.yml', 'upload_info') # 此时kwargs是dict类型 clk_clock_audit.req_get(**kwargs) # 通过**操作符将kwargs解包成 n个入参
def send_coupon_to_user(user_id, coupon_id): kwargs = data_pool.supply('mxcorder_data.yml', 'send_coupon_to_user')[0] kwargs['userId'] = user_id # 18899708134 kwargs['couponId'] = coupon_id res = mxc_order.send_coupon_to_user(**kwargs) assert res.status is True
class TestZeusMongo: # 用hook函数来参数化, 未调试过和parametrize和fixture共同使用的场景 def test_auto_supply(self, __kwargs): print(__kwargs) # 叠加parametrize. case层可以直接调用api层 @pytest.mark.parametrize('api_id', ['10023']) @pytest.mark.parametrize('kwargs', data_pool.supply('bbc_user_batch.yml', 'user_submit_and_login3')) def test_double_parametrize(self, api_id, kwargs): # res = base_api(sapidata, kwargs) # return res print(kwargs["phone"] + api_id) # 叠加parametrize. case层接受参数,调用server层 @pytest.mark.parametrize('api_id', ['10023']) @pytest.mark.parametrize('kwargs', data_pool.supply('bbc_user_batch.yml', 'user_submit_and_login3')) def test_double_parametrize(self, api_id, kwargs): # res = base_api(apidata, kwargs) # return res print(kwargs["phone"] + api_id) # 以前的case层,需要创建api层代码,然后在这里关联api层模块 @pytest.mark.skip @pytest.mark.parametrize("kwargs", data_pool.supply('bbc_user_batch.yml', 'user_submit_and_login2')) def test_exam_login(self, kwargs): kwargs['examId'] = 'e0e684cd-5e9e-476c-89c4-9e99437ebfe8' # 考试id对应的uuid kwargs['identityType'] = 'IDCARD' kwargs['identityNo'] = '371325198509024721' # res = bbc_match.exam_login(**kwargs) res = 0 assert res.status is True # 方案0:在parametrize里指定2个参数,不合理,kwargs里的多个字段都要使用同一个接口的 # 方案1: 在函数签名后加上fixture参数,不方便,需要进函数内部修改 @pytest.mark.parametrize("kwargs", ['001', '002', '003']) def test_lensaclrtn(self, kwargs, fix_bind_api): print('test_lensaclrtn主体' + kwargs) res = base_api(fix_bind_api('12233'), kwargs) return res # 优化方案2: 自己写个注解,不确定和pytest原有装饰器共用是否会有什么问题,而且参数传递和处理流程不明 # @deco.find_bind_api('12333') @pytest.mark.parametrize("kwargs", ['001', '002', '003']) def test_lensaclrtn(self, kwargs, fix_bind_api): print('test_lensaclrtn主体' + kwargs) res1 = base_api.get(api_data, kwargs) return res # 优化方案3: 将kwargs的值传到fixture中包装,然后再传回函数。 # @pytest.mark.parametrize('kwargs', data_pool.supply("aaa.yml", 'keyword')[0]) # @pytest.mark.usefixtures('bind_api') # def test_lensaclrtn(self, kwargs, bind_api): # print('test_lensaclrtn主体' + kwargs) # return res # 完整流程,执行前需修改【报名活动id,试卷id,考试id】 @pytest.mark.skip @pytest.mark.parametrize("kwargs", data_pool.supply('bbc_user_batch.yml', 'user_submit_and_login3')) @pytest.mark.usefixtures("crm_login_with_mm", "h5_login") def test_submit_pay_audit(self, kwargs): match_id = '90' paper_id = '65' exam_id = '89' pass @pytest.mark.parametrize('kwargs', [lzp]) def test_pytest_collect_file(self, kwargs): # print("hello", path) # sun_sign_ret = lzp # print(sun_sign_ret) logger.info(kwargs)
self.req_url = '/lottery/getUserPrizeRecord' self.req_body = kwargs self.req_cookies = { 'exam_token': auth_util.get_token('bbc', 'exam_token'), } result = self.x_request() assert_util.result_check(result) return result # 导出中奖记录 # id,userId def export_activity_record(self, **kwargs): self.req_method = 'GET' self.req_url = '/lottery/activityRecord' self.req_body = kwargs self.req_cookies = { 'exam_token': auth_util.get_token('bbc', 'exam_token'), } result = self.x_request() assert_util.result_check(result) return result anniv_answer_award = AnnivAnswerAward( common_util.env('DOMAIN_GZ') + '/gzactivity') if __name__ == '__main__': kwargs = data_pool.supply('anniv_answer_award_data.yml', 'save_8thank')[0] res1 = anniv_answer_award.save(**kwargs) assert res1.status is True
class TestBlueBridgeContest: # @allure.story("用例--注册/登录/查看--预期成功") # @allure.description("该用例是针对 注册-登录-查看 场景的测试") # @allure.issue("https://www.cnblogs.com/wintest", name="点击,跳转到对应BUG的链接地址") # @allure.testcase("https://www.cnblogs.com/wintest", name="点击,跳转到对应用例的链接地址") # @allure.title("用户注册登录查看-预期成功") """官网-创建订单-微信支付 购买k1课程 5280块 """ @pytest.mark.skip @pytest.mark.single @pytest.mark.parametrize( "kwargs", data_pool.supply('goods_order_data.yml', 'demolition_order_k1')) # @pytest.mark.usefixtures("crm_login_with_mm") def test_demolition_order_k1(self, kwargs): res = goods_order.demolition_order(**kwargs) assert res.status is True # signin_id = res.sdata.get('id') # logger.info(f"报名ID是{signin_id}") """官网-创建订单-微信支付 购买s5课程 6000块 """ @pytest.mark.skip @pytest.mark.single @pytest.mark.parametrize( "kwargs", data_pool.supply('goods_order_data.yml', 'demolition_order_s5')) # @pytest.mark.usefixtures("crm_login_with_mm") def test_demolition_order_s5(self, kwargs): # kwargs['orderNo'] = pre_orderNo res = goods_order.demolition_order(**kwargs) assert res.status is True """微信支付页 购买k1课程 5280块 """ @pytest.mark.skip @pytest.mark.single # @pytest.mark.usefixtures("crm_login_with_mm") @pytest.mark.parametrize( "kwargs", data_pool.supply('goods_order_data.yml', 'get_pay_page_k1')) def test_get_pay_page_k1(self, kwargs): res = goods_order.getPayPage(**kwargs) assert res.status is True """微信支付页 购买s5课程 6000块 """ @pytest.mark.skip @pytest.mark.single # @pytest.mark.usefixtures("crm_login_with_mm") @pytest.mark.parametrize( "kwargs", data_pool.supply('goods_order_data.yml', 'get_pay_page_s5')) def test_get_pay_page_s5(self, kwargs): res = goods_order.getPayPage(**kwargs) assert res.status is True """微信支付模拟回调成功 SQL_ORDERNO_OUTTRADENO = SELECT pr.outTradeNo FROM payrecord pr INNER JOIN goodsorder go ON pr.goodsOrderId = go.id WHERE go.orderNo = 'xxxx' AND pr.payStatus = 'WAITING'; """ @pytest.mark.skip @pytest.mark.single # @pytest.mark.usefixtures("crm_login_with_mm") @pytest.mark.parametrize( "kwargs", data_pool.supply('goods_order_data.yml', 'simulation_call_back')) def test_simulation_call_back(self, kwargs): # sql_orderno = "SELECT outTradeNo FROM payrecord WHERE payStatus = 'WAITING' AND payType = 'WX'" # sql_result = mysqler.query(sql_orderno) # logger.info(sql_result) # if sql_result == '' or sql_result is None: # exit("sorry, goodbye!") # # pass # # out_trade_no = sql_result[0][0] # logger.info("out_trade_no是 " + out_trade_no) # # result = goods_order.pay_callback_suc(out_trade_no) # # print(result.__dict__) # assert result.response.status_code == 200 res = goods_order.getPayPage(**kwargs) assert res.status is True
# 新增leads # 要先调用 api-sit.miaocode.com/api/mxcaccount/account/logout接口 # 获取响应头中的 Set-Cookie: SESSION=O def add_visit_leads(self, **kwargs): self.req_method = 'POST' self.req_url = '/leads/visit/addVisitLeads' self.req_body = kwargs self.req_headers = { 'mxc-token': auth_util.get_token('mxc', 'mxc-token'), } result = self.request(method=self.req_method, url=self.req_url, headers=self.req_headers, cookies=self.req_cookies, json=self.req_body) assert_util.result_check(result) return result mxc_user = MxcUser(common_util.env('DOMAIN_GZ') + '/mxcuser') if __name__ == '__main__': kwargs = data_pool.supply('mxcuser_data.yml', 'add_visit_leads')[0] kwargs['childName'] = 'Asc' + fakerist.word() kwargs['phone'] = '18899708138' res1 = mxc_user.add_visit_leads(**kwargs) userid = res1.sdata.get('userId') # 4003926 childName = res1.sdata.get('childName') # Asc以及 assert res1.status is True