Exemplo n.º 1
0
class TestLogin(BaseTest):
    """
    author: ArtLinty
    email: [email protected]
    desc: 测试测试禅道登录业务
    """
    __test = dict(
        collection=read_csv(current=__file__, file_path="test_login.csv"),
        url=read_yaml(current=__file__, file_path="../../config/env_active.yml", key="zentao.url"),
        title="在登录页面,使用合法数据登录,操作成功",
        case="https://dwz.cn/GUIf2ZeN",
        feature="登录",
        story="系统登录操作",
        tag=("web", "zentao", "login", "valid"),
        severity=allure.severity_level.CRITICAL
    )

    @pytest.fixture(autouse=True)
    def prepare(self):
        """
        测试固件
        :return:
        """

        self.init_logger(__name__)
        self.init_driver(url=self.__test.get("url"))

        yield
        self.close_driver()

    @allure.feature(__test.get("feature"))
    @allure.story(__test.get("story"))
    @allure.tag(*__test.get("tag"))
    @allure.severity(__test.get("severity"))
    @allure.testcase(url=__test.get("case"))
    @allure.title(__test.get("title"))
    @pytest.mark.parametrize("data", __test.get("collection"))
    def test_login(self, data):
        """
        测试登录,合法数据正常登录
        :param data:
        :return:
        """

        account = data.get("account")
        password = data.get("password")
        language = data.get("language")

        actual_lang_button_text = biz_set_language(
            driver=self.driver,
            language=language,
            logger=self.logger
        )
        self.snapshot("在登录页面设置语言后截图=%r" % data)
        self.info("[%s] - 在登录页面设置语言,使用数据: %r" % (__name__, dict(language=language)))
        assert self.assert_equal(expected=data.get("exp_button_lang"), actual=actual_lang_button_text)

        current_url, actual_real_name = biz_get_real_name_after_login(
            driver=self.driver,
            account=account,
            password=password,
            logger=self.logger
        )

        self.info(
            "[%r]-登录禅道, 使用数据 account=%r, password=%r"
            % (__file__, account, password)
        )
        self.snapshot("登录后截图数据=%r" % data)
        expected = data.get("expected_url")
        assert self.assert_in(
            expected=expected,
            actual=current_url
        ), "登录后URL地址不对, expected=%r, actual=%r, 当前数据=%r" % (expected, current_url, data)

        expected = data.get("expected_real_name")
        assert self.assert_in(
            expected=expected,
            actual=actual_real_name
        ), "登录后 realname 地址不对, expected=%r, actual=%r, 当前数据=%r" % (expected, actual_real_name, data)
Exemplo n.º 2
0
class TestWeatherNow(BaseTest):
    """
    标题: 在天气指数接口,使用合法有效的数据请求  查询天气指数接口,查询成功
    作者: 梁静
    时间: 20190826
    邮件: [email protected]
    """
    __test = dict(
        collection=read_csv(current=__file__, file_path="test_weather_now.csv"),
        config=read_yaml(current=__file__, file_path="../../config/env_active.yml", key="seniverse"),
        title="在天气指数接口,使用合法有效的数据请求  查询天气指数接口,查询成功",
        case="",
        feature="天气接口",
        story="天气接口的查询",
        tag=("api", "seniverse", "view", "valid"),
        severity=allure.severity_level.NORMAL
    )

    @pytest.fixture(autouse=True)
    def prepare(self):
        """
        测试执行使用的测试固件,包含前置条件和清理操作
        :return:
        """
        # 首先是前置条件,在yeild之前
        # 准备日志条件,就可以记录整个测试
        self.init_logger(__name__)
        # 准备请求对象,就可以传递请求给业务,也可以对请求进行抓包截图
        self.init_request(
            schema=parse_dict(dict_data=self.__test, data_key="config.schema"),
            host=parse_dict(dict_data=self.__test, data_key="config.host")
        )
        # 是 yeild 的关键字,代表执行test_ 开头的方法的具体内容
        self.info("[%s]- 完成测试的前置条件 set_up!  " % __name__)
        yield
        # 接下来是 清理操作
        self.close_request()
        self.wait()
        self.info("[%s]- 完成测试的清理操作  tear_up!" % __name__)

    @allure.feature(__test.get("feature"))
    @allure.story(__test.get("story"))
    @allure.tag(*__test.get("tag"))
    @allure.severity(__test.get("severity"))
    @allure.testcase(url=__test.get("case"))
    @allure.title(__test.get("title"))
    @pytest.mark.parametrize("data", __test.get("collection"))
    def test_weather_now(self, data):
        """
        执行测试的具体步骤

        :param data: 通过读取__test_data_collection 得到一套 test_data
        :return: none
        """
        self.info("[%s]-开始执行测试 ,使用数据:%r !" % (__name__, data))
        # 准备数据  从test_data 取数据
        data_input_dict = dict(
            api_key=data.get("私钥"),
            location=data.get("location"),
            language=data.get("language"),
            unit=data.get("unit"),
            request=self.request,
            logger=self.logger
        )

        # 调用业务,使用上面的数据
        self.info("[%s]-调用业务,使用数据data_input_dict:%r !" % (__name__, data_input_dict))
        resp = biz_view_weather_now(data_input_dict)
        # 对比结果,使用test_data取得的期望,和上一步取得的结果进行对比
        self.info("[%s]-开始进行断言,使用rasp:%r !" % (__name__, resp))
        assert self.assert_equal(expected=data.get("期望状态码"), actual=resp.get("status_code"))
        assert self.assert_equal(expected=data.get("期望城市名称"), actual=resp.get("location.name"))
        assert self.assert_equal(expected=data.get("期望国家代号"), actual=resp.get("location.country"))
        assert self.assert_equal(expected=data.get("期望城市代码"), actual=resp.get("location.id"))

        self.info("[%s]-结束执行测试,使用数据:%r !" % (__name__, data))
Exemplo n.º 3
0
class TestWithdrawAdd(BaseTest):
    """
    标题: 在支付对象接口,使用合法有效的数据请求 创建支付的接口,创建成功
    作者: 刘挺立
    时间: 20190813
    邮件: [email protected]
    """
    __test = dict(collection=read_csv(current=__file__,
                                      file_path="test_withdraw_add.csv"),
                  config=read_yaml(current=__file__,
                                   file_path="../../config/env_active.yml",
                                   key="vvtech"),
                  title="在支付对象接口,使用合法有效的数据请求,创建支付的接口,创建成功",
                  case="https://dwz.cn/GUIf2ZeN",
                  feature="取款接口",
                  story="取款对象的创建",
                  tag=("api", "vvtech", "add", "valid"),
                  severity=allure.severity_level.CRITICAL)

    @pytest.fixture(autouse=True)
    def prepare(self):
        """
        测试执行使用的测试固件,包含前置条件和清理操作
        :return: None
        """
        # 首先是前置条件,在 yield 之前
        # 准备日志文件,就可以记录整个测试
        self.init_logger(__name__)
        # 准备请求对象,就可以传递请求给业务,也可以对请求进行抓包截图
        self.init_request(schema=parse_dict(dict_data=self.__test,
                                            data_key="config.schema"),
                          host=parse_dict(dict_data=self.__test,
                                          data_key="config.host"))
        # 是 yield 关键字,代表执行 test_ 开头的方法的具体内容
        self.info("[%s] - 完成测试的前置条件 set_up! " % __name__)
        yield

        # 最后是清理操作,在 yield 之后
        self.wait()
        self.info("[%s] - 完成测试的清理操作 tear_down! " % __name__)

    @allure.feature(__test.get("feature"))
    @allure.story(__test.get("story"))
    @allure.tag(*__test.get("tag"))
    @allure.severity(__test.get("severity"))
    @allure.testcase(url=__test.get("case"))
    @allure.title(__test.get("title"))
    @pytest.mark.parametrize("data", __test.get("collection"))
    def test_charges_create(self, data):
        """
        执行测试的具体步骤
        :param data: 通过读取 __test_data_collection 得到一条 test_data
        :return: None
        """
        self.info("[%s] - 开始执行测试,使用数据:%r! " % (__name__, data))
        # 准备数据 从 test_data 取数据

        data_input_dict = dict(vv_vv_signature=data.get("签名"),
                               vv_time=data.get("时间戳"),
                               app_secret=data.get("密钥"),
                               client_id=data.get("客户编号"),
                               password=data.get("密码"),
                               is_android=data.get("平台"),
                               mobile=data.get("手机号"),
                               version=data.get("版本"),
                               amount=data.get("金额"),
                               bank_card_id=data.get("卡号"),
                               request=self.request,
                               logger=self.logger)

        # 调用业务,使用上面准备的数据
        self.info("[%s] - 开始调用业务,使用数据 data_input_dict:%r! " %
                  (__name__, data_input_dict))
        resp, resp2 = biz_add_withdraw(data_input_dict)

        # 对比结果,使用 test_data 取到的期望,和上一步执行得到的结果进行对比
        self.info("[%s] - 开始进行断言,使用数据 resp:%r! " % (__name__, resp))
        assert self.assert_equal(expected=data.get("期望状态码"),
                                 actual=resp.get("status_code"))
        assert self.assert_equal(expected=data.get("期望状态码"),
                                 actual=resp2.get("status_code"))
        assert self.assert_int_equal(expected=data.get("期望flag"),
                                     actual=resp2.get("flag"))

        self.info("[%s] - 结束执行测试,使用数据:%r! " % (__name__, data))
Exemplo n.º 4
0
class TestChargesCreate(BaseTest):
    """
    标题: 在支付对象接口,使用合法有效的数据请求 创建支付的接口,创建成功
    作者: 刘挺立
    时间: 20190813
    邮件: [email protected]
    """
    __test = dict(
        collection=read_csv(current=__file__, file_path="test_charges_create.csv"),
        config=read_yaml(current=__file__, file_path="../../config/env_active.yml", key="pingxx"),
        title="在支付对象接口,使用合法有效的数据请求,创建支付的接口,创建成功",
        case="https://dwz.cn/GUIf2ZeN",
        feature="支付接口",
        story="支付对象的创建",
        tag=("api", "pingxx", "create", "valid"),
        severity=allure.severity_level.CRITICAL
    )

    @pytest.fixture(autouse=True)
    def prepare(self):
        """
        测试执行使用的测试固件,包含前置条件和清理操作
        :return: None
        """
        # 首先是前置条件,在 yield 之前
        # 准备日志文件,就可以记录整个测试
        self.init_logger(__name__)
        # 准备请求对象,就可以传递请求给业务,也可以对请求进行抓包截图
        self.init_request(
            schema=parse_dict(dict_data=self.__test, data_key="config.schema"),
            host=parse_dict(dict_data=self.__test, data_key="config.host")
        )
        # 是 yield 关键字,代表执行 test_ 开头的方法的具体内容
        self.info("[%s] - 完成测试的前置条件 set_up! " % __name__)
        yield

        # 最后是清理操作,在 yield 之后
        self.wait()
        self.info("[%s] - 完成测试的清理操作 tear_down! " % __name__)

    @allure.feature(__test.get("feature"))
    @allure.story(__test.get("story"))
    @allure.tag(*__test.get("tag"))
    @allure.severity(__test.get("severity"))
    @allure.testcase(url=__test.get("case"))
    @allure.title(__test.get("title"))
    @pytest.mark.parametrize("data", __test.get("collection"))
    def test_charges_create(self, data):
        """
        执行测试的具体步骤
        :param data: 通过读取 __test_data_collection 得到一条 test_data
        :return: None
        """
        self.info("[%s] - 开始执行测试,使用数据:%r! " % (__name__, data))
        # 准备数据 从 test_data 取数据
        rsa_raw = data.get("RSA私钥")
        if rsa_raw is not None and rsa_raw != "":
            rsa_private = read_txt(current=__file__, file_path=rsa_raw)
        else:
            rsa_private = None

        extra_raw = data.get("extra")
        if extra_raw is not None and extra_raw != "":
            extra_value = read_yaml(current=__file__,
                                    file_path=extra_raw,
                                    key="%s/data/extra" % data.get("数据编号"))
        else:
            extra_value = None

        data_input_dict = dict(
            order_no=data.get("订单编号"),
            amount=data.get("金额"),
            channel=data.get("渠道"),
            currency=data.get("货币"),
            subject=data.get("主题"),
            body=data.get("正文"),
            description=data.get("描述"),
            extra=extra_value,
            app=dict(id=data.get("app")),
            client_ip=data.get("client_ip"),
            secret_key=data.get("密钥"),
            rsa_private=rsa_private,
            request=self.request,
            logger=self.logger
        )

        # 调用业务,使用上面准备的数据
        self.info("[%s] - 开始调用业务,使用数据 data_input_dict:%r! " % (__name__, data_input_dict))
        resp = biz_create_charge(data_input_dict)

        # 对比结果,使用 test_data 取到的期望,和上一步执行得到的结果进行对比
        self.info("[%s] - 开始进行断言,使用数据 resp:%r! " % (__name__, resp))
        assert self.assert_equal(expected=data.get("期望状态码"), actual=resp.get("status_code"))
        assert self.assert_equal(expected=data.get("期望object"), actual=resp.get("object"))
        assert self.assert_equal(expected=bool(data.get("期望paid")), actual=resp.get("paid"))
        assert self.assert_equal(expected=data.get("渠道"), actual=resp.get("channel"))
        assert self.assert_equal(expected=data.get("金额"), actual=resp.get("amount"))

        self.info("[%s] - 结束执行测试,使用数据:%r! " % (__name__, data))
Exemplo n.º 5
0
class TestLifeSuggest(BaseTest):
    """
    标题: 在生活指数接口,使用合法有效的数据请求 查询生活指数的接口,查询成功
    作者: 刘挺立
    时间: 20190814
    邮件: [email protected]
    """
    __test = dict(collection=read_csv(current=__file__,
                                      file_path="test_life_suggest.csv"),
                  config=read_yaml(current=__file__,
                                   file_path="../../config/env_active.yml",
                                   key="seniverse"),
                  title="在生活指数接口,使用合法有效的数据请求 查询生活指数的接口,查询成功",
                  case="https://dwz.cn/GUIf2ZeN",
                  feature="生活接口",
                  story="生活指数的查询",
                  tag=("api", "seniverse", "view", "valid"),
                  severity=allure.severity_level.CRITICAL)

    @pytest.fixture(autouse=True)
    def prepare(self):
        """
        测试执行使用的测试固件,包含前置条件和清理操作
        :return: None
        """
        # 首先是前置条件,在 yield 之前
        # 准备日志文件,就可以记录整个测试
        self.init_logger(__name__)
        # 准备请求对象,就可以传递请求给业务,也可以对请求进行抓包截图
        self.init_request(schema=parse_dict(dict_data=self.__test,
                                            data_key="config.schema"),
                          host=parse_dict(dict_data=self.__test,
                                          data_key="config.host"))
        # 是 yield 关键字,代表执行 test_ 开头的方法的具体内容
        self.info("[%s] - 完成测试的前置条件 set_up! " % __name__)
        yield

        # 最后是清理操作,在 yield 之后
        self.wait()
        self.info("[%s] - 完成测试的清理操作 tear_down! " % __name__)

    @allure.feature(__test.get("feature"))
    @allure.story(__test.get("story"))
    @allure.tag(*__test.get("tag"))
    @allure.severity(__test.get("severity"))
    @allure.testcase(url=__test.get("case"))
    @allure.title(__test.get("title"))
    @pytest.mark.parametrize("data", __test.get("collection"))
    def test_life_suggest(self, data):
        """
        执行测试的具体步骤
        :param data: 通过读取 __test_data_collection 得到一条 test_data
        :return: None
        """
        self.info("[%s] - 开始执行测试,使用数据:%r! " % (__name__, data))
        # 准备数据 从 test_data 取数据
        data_input_dict = dict(api_key=data.get("私钥"),
                               location=data.get("location"),
                               language=data.get("language"),
                               request=self.request,
                               logger=self.logger)

        # 调用业务,使用上面准备的数据
        self.info("[%s] - 开始调用业务,使用数据 data_input_dict:%r! " %
                  (__name__, data_input_dict))
        resp = biz_view_life_suggestion(data_input_dict)

        # 对比结果,使用 test_data 取到的期望,和上一步执行得到的结果进行对比
        self.info("[%s] - 开始进行断言,使用数据 resp:%r! " % (__name__, resp))
        assert self.assert_equal(expected=data.get("期望状态码"),
                                 actual=resp.get("status_code"))
        assert self.assert_equal(expected=data.get("期望城市名称"),
                                 actual=resp.get("location.name"))
        assert self.assert_equal(expected=data.get("期望国家代号"),
                                 actual=resp.get("location.country"))

        self.info("[%s] - 结束执行测试,使用数据:%r! " % (__name__, data))