Beispiel #1
0
    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)
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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}")
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
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
Beispiel #9
0
 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
Beispiel #10
0
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
Beispiel #11
0
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
Beispiel #12
0
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
Beispiel #13
0
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
Beispiel #14
0
    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
Beispiel #15
0
    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
Beispiel #16
0
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
Beispiel #17
0
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
Beispiel #18
0
            '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)
Beispiel #20
0
        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
Beispiel #21
0
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
Beispiel #22
0
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
Beispiel #23
0
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)
Beispiel #24
0
        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个入参
Beispiel #25
0
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
Beispiel #26
0
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)
Beispiel #27
0
        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
Beispiel #28
0
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
Beispiel #29
0
    # 新增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