Exemplo n.º 1
0
class TestRegister(unittest.TestCase):
    excel = ReadExcel(data_file_path, "register")
    cases = excel.read_data()
    http = HandleRequest()



    @data(*cases)
    def test_register(self, case):
        # ------第一步:准备用例数据------------
        # 拼接完整的接口地址
        url = conf.get_str("env", "url") + case["url"]
        # 请求的方法
        method = case["method"]
        # 请求参数
        # 判断是否有有手机号码需要替换
        if "#phone#" in case["data"]:
            # 生成一个手机号码
            phone = self.random_phone()
            # 进行替换
            case["data"] = case["data"].replace("#phone#", phone)

        data = eval(case["data"])
        # 请求头
        headers = eval(conf.get_str("env", "headers"))
        # 预期结果
        expected = eval(case["expected"])
        # 该用例在表单的中所在行
        row = case["case_id"] + 1

        # ------第二步:发送请求到接口,获取实际结果--------
        response = self.http.send(url=url, method=method, json=data, headers=headers)
        result = response.json()
        # --------------------以下内容为扩展内容----------------
        # 先判断是否注册成功,如果是注册成功
        # self.phone = "注册成功的手机号码"  # 没有注册成功就设置未None
        # ---------------------------------------------------

        # -------第三步:比对预期结果和实际结果-----
        try:
            self.assertEqual(expected["code"], result["code"])
            self.assertEqual((expected["msg"]), result["msg"])
        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            my_log.info("用例:{}--->执行未通过".format(case["title"]))
            print("预取结果:{}".format(expected))
            print("实际结果:{}".format(result))
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            my_log.info("用例:{}--->执行通过".format(case["title"]))

    @staticmethod
    def random_phone():
        """生成随机的手机号码"""
        phone = "133"
        for i in range(8):
            phone += str(random.randint(0, 9))

        return phone
Exemplo n.º 2
0
class Test_Login(unittest.TestCase):
    excel = ReadExcel(case_file, "login")
    cases = excel.read_data()  #列表==》2个及以上的字典==》1个字典就是一条用例
    request = SendRequest()

    @data(*cases)
    def test001_login(self, case):
        #第一步:准备接口请求数据
        url = conf1.get("env", "url") + case["url"]
        # print(url)
        method = case['method']
        # eval这个内置函数的作用:执行一个字符串表达式、并且返回执行后的结果
        params = eval(case['params'])
        # print(params)
        auth = HTTPBasicAuth("1000001".encode('utf-8'), "123456")
        expected = eval(case['expected'])  #用来和实际结果进行对比==》断言
        # print(expected)
        row = case['case_id'] + 1

        # #第二步:发送接口请求
        c = SendRequest()
        res = self.request.send(method,
                                api="login",
                                url=url,
                                params=params,
                                auth=auth)
        # res = self.request.send(method, api="login", url=url, params=params)
        result = res.json()
        print(result)
Exemplo n.º 3
0
class TestLogin(unittest.TestCase):
    excel = ReadExcel(case_file, "login")
    cases = excel.read_data()
    request = SendRequest()

    @data(*cases)
    def test_login(self, case):
        # 第一步:准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]

        data = eval(case["data"])
        headers = eval(conf.get("env", "headers"))
        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 第二步:发送请求,获取结果
        response = self.request.send(url=url,
                                     method=method,
                                     json=data,
                                     headers=headers)
        res = response.json()
        # 第三步:断言(比对预期结果和实际结果)
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例:{},执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{},执行未通过".format(case["title"]))
Exemplo n.º 4
0
class TestUser(unittest.TestCase):
    excel = ReadExcel(os.path.join(data_dir, "test_cases.xlsx"),
                      "username_email")
    cases = excel.read_data()
    request = SendRequest()

    @data(*cases)
    def test_user(self, case):
        # 准备用例数据
        url = conf.get("env", "url") + CaseData.replace_data(case["url"])
        data = eval(case["data"])
        headers = eval(conf.get("env", "headers"))
        method = case["method"]
        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 发送请求,获取相应结果
        reponse = self.request.send(url=url,
                                    method=method,
                                    headers=headers,
                                    params=data)
        res = reponse.json()
        print("预期结果", expected)
        print("实际结果", res)
        # 断言
        try:
            self.assertEqual(res["count"], expected["count"])
        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="不通过")
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
Exemplo n.º 5
0
class TestMainStream(unittest.TestCase):
    excel = ReadExcel(case_file, "main_stream")
    cases = excel.read_data()
    request = SendRequest()

    @data(*cases)
    def test_main_stream(self, case):
        # 第一步:准备用例数据
        url = conf.get("env", "url") + replace_data(case["url"])
        method = case["method"]
        if case["interface"] == "register":
            # 注册接口,则随机生成一个手机号码
            CaseDate.mobilephone = self.random_phone()
        data = eval(replace_data(case["data"]))
        headers = eval(conf.get("env", "headers"))

        # 判断是否是登录接口,不是登录接口则需要添加token
        if case["interface"] != "login" and case["interface"] != "register":
            headers["Authorization"] = getattr(CaseDate, "token_value")

        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 第二步:发送请求,获取结果
        print("请求参数:", data)
        response = self.request.send(url=url,
                                     method=method,
                                     json=data,
                                     headers=headers)
        res = response.json()
        print("预期结果", expected)
        print("实际结果", res)
        # 发送请求后,判断是否是登陆接口
        if case["interface"].lower() == "login":
            # 提取用户id保存为类属性
            CaseDate.member_id = str(jsonpath.jsonpath(res, "$..id")[0])
            token = jsonpath.jsonpath(res, "$..token")[0]
            token_type = jsonpath.jsonpath(res, "$..token_type")[0]
            # 提取token,保存为类属性
            CaseDate.token_value = token_type + " " + token
        # 判断是否是加标的用例,如果是的则请求标id
        if case["interface"] == "add":
            CaseDate.loan_id = str(jsonpath.jsonpath(res, "$..id")[0])
        # 第三步:断言(比对预期结果和实际结果)
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertIn(expected["msg"], res["msg"])
        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例:{},执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{},执行未通过".format(case["title"]))

    def random_phone(self):
        phone = "137"
        n = random.randint(100000000, 999999999)
        phone += str(n)[1:]
        return phone
Exemplo n.º 6
0
class TestLogin(unittest.TestCase):
    excel = ReadExcel(data_path, 'login')
    login_data = excel.read_excel()
    http = HeadleRequest()

    @data(*login_data)
    def test_login(self, case):
        # 准备测试数据
        url = conf.get('env', 'url') + case['url']
        expected = eval(case['expected'])
        data = eval(case['data'])
        row = case['case_id'] + 1
        method = case['method']
        headers = eval(conf.get('env', 'headers'))
        # 发送请求
        response = self.http.send(url=url,
                                  method=method,
                                  json=data,
                                  headers=headers)
        res = response.json()
        # 断言
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
        except AssertionError as e:
            self.excel.write(row=row, column=8, value='未通过')
            mylog.info('用例:{}---->执行未通过'.format(case['title']))
            print('预期结果:{}'.format(expected))
            print('实际结果:{}'.format(res))
            raise e
        else:
            self.excel.write(row=row, column=8, value='通过')
            mylog.info('用例:{}---->执行通过'.format(case['title']))
Exemplo n.º 7
0
class TestRegister(unittest.TestCase):
    excel = ReadExcel(case_file, 'register')
    datas = excel.read_data()
    request = SendRequest()

    @data(*datas)
    def test_regiter(self, case):
        # 准备测试数据
        CaseData.username = self.random_user()
        CaseData.email = self.random_email()
        url = conf.get('env', 'url') + replace_data(case['url'])
        method = case['method']
        case['data'] = replace_data(case['data'])
        data = eval(case['data'])
        expected = eval(case['expected'])
        row = case['case_id'] + 1
        # 获取结果
        response = self.request.send(url=url, method=method, json=data)
        res = response.json()
        status = response.status_code
        # 对预期结果和相应结果进行断言
        try:
            self.assertEqual(expected['status'], status)
            if case['title'] != '注册成功':
                if case['method'].lower() == 'get':
                    self.assertEqual(expected['count'], res['count'])
                else:
                    self.assertIn(expected['msg'], str(res.values()))

        except AssertionError as E:
            print('预期结果:', expected)
            print('实际结果:', status, res)
            self.excel.write_data(row=row, column=8, value='不通过')
            log.error('{}用例不通过'.format(case['title']))
            log.exception(E)
            raise E
        else:
            self.excel.write_data(row=row, column=8, value='通过')

    def random_user(self):
        self.user = ''.join(
            random.sample('0123456789zbcdefghijklmnopqrstuvwxyz', 6))
        url = r'http://api.keyou.site:8000/user/{}/count/'.format(self.user)
        method = 'get'
        response = self.request.send(url=url, method=method)
        res = response.json()
        if res['count'] == 1:
            self.random_user()
        return self.user

    def random_email(self):
        email = self.user + '@163.com'
        url = r'http://api.keyou.site:8000/user/{}/count/'.format(email)
        method = 'get'
        response = self.request.send(url=url, method=method)
        res = response.json()
        if res['count'] == 1:
            self.random_user()
            self.random_email()
        return email
Exemplo n.º 8
0
class Test_Login(unittest.TestCase):
    excel = ReadExcel(case_file, "能源管理中心")
    cases = excel.read_data()  #列表==》2个及以上的字典==》1个字典就是一条用例
    request = SendRequest()
    token = Token_cls().token()

    @data(*cases)
    def test001_login(self, case):
        #第一步:准备接口请求数据
        url = conf1.get("env", "url") + case["url"]
        # print(url)
        method = case['method']
        # eval这个内置函数的作用:执行一个字符串表达式、并且返回执行后的结果
        params = eval(case['params'])  # eval函数的参数必须为字符串,否则将报错:
        # params = case['params']

        headers = {"Content-Type": "text/plain", "ID-Token": self.token}
        expected = eval(case['expected'])  #用来和实际结果进行对比==》断言
        classification = case['classification']  #用来和实际结果进行对比==》断言

        row = case['case_id'] + 1

        # 第二步:发送接口请求
        # c = SendRequest()
        res = self.request.send(method,
                                url=url,
                                params=params,
                                headers=headers)
        # res = self.request.send(method, api="login", url=url, params=params)
        result = res.json()
        # self.excel.write_data(row=row, column=10, value=str(result))
        print(result)
Exemplo n.º 9
0
class TESTAdd(unittest.TestCase):
    excel = ReadExcel(file_path, "add")
    cases = excel.read_data()
    request = SendRequest()

    @classmethod
    def setUpClass(cls):
        """管理员账户登录"""
        url = conf.get("env", "url") + "/member/login"
        data = {
            "mobile_phone": conf.get("test_data", "admin_phone"),
            "pwd": conf.get("test_data", "admin_pwd")
        }
        headers = eval(conf.get("env", "headers"))
        response = cls.request.send(url=url,
                                    method="post",
                                    json=data,
                                    headers=headers)
        res = response.json()
        token = jsonpath.jsonpath(res, "$..token")[0]
        token_type = jsonpath.jsonpath(res, "$..token_type")[0]
        member_id = jsonpath.jsonpath(res, "$..id")[0]
        # 将提取的数据保存到CaseData的属性中
        CaseDate.admin_token_value = token_type + " " + token
        CaseDate.admin_member_id = member_id

    @data(*cases)
    def test_add(self, case):
        # 第一步:准备数据
        url = conf.get("env", "url") + case["url"]
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(CaseDate, "admin_token_value")
        data = eval(replace_data(case["data"]))
        expected = eval(case["expected"])
        method = case["method"]
        row = case["case_id"] + 1
        # 第二步:发请求获取实际结果
        response = self.request.send(url=url,
                                     method=method,
                                     json=data,
                                     headers=headers)
        res = response.json()

        # 第三步:断言(比对预期结果和实际结果)
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            # 数据库校验

        except AssertionError as e:
            print("预期结果:", expected)
            print("实际结果:", res)
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例:{},执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{},执行未通过".format(case["title"]))
Exemplo n.º 10
0
class TestRegister(unittest.TestCase):
    excel = ReadExcel(case_file, "register")
    cases = excel.read_data()
    request = SendRequest()
    db = DB()

    def setUp(self):
        """测试用例运行前运行"""
        # 随机生成一个用户名,保存
        CaseDate.name = self.random_name()

    @data(*cases)
    def test_register(self, case):
        # 第一步:准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]
        # 替换用例数据
        data = eval(replace_data(case["data"]))
        # 替换预期结果中的数据
        expected = eval(replace_data(case["expected"]))
        row = case["case_id"] + 1
        # 第二步:发送请求,获取结果
        response = self.request.send(url=url, method=method, json=data)
        res = response.json()
        try:
            self.assert_dict_item(expected, res)
        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例:{},执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{},执行通过".format(case["title"]))

    def assert_dict_item(self, dic1, dic2):
        """
        断言dic1中的所有元素都是diac2中的成员,成立返回True,不成立引发断言错误
        :param dic1: 字典
        :param dic2: 字典
        :return:
        """
        for item in dic1.items():
            if item not in dic2.items():
                raise AssertionError("{} items not in {}".format(dic1, dic2))

    def random_name(self):
        """随机生成一个用户名"""
        print("---name-")
        while True:
            s1 = random.choice(["a", "b", "c", "d", "e"])
            number = random.randint(1, 999999)
            name = s1 + str(number)
            # 判断数据库中是否存在该用户名,
            res = self.db.find_count(
                "SELECT * FROM test.auth_user WHERE username='******'".format(
                    name))
            if res == 0:
                return name
class TestRegister(unittest.TestCase):
    excel = ReadExcel(os.path.join(data_dir,"test_cases.xlsx"),"register")
    cases = excel.read_data()
    request = SendRequest()

    @data(*cases)
    def test_register(self,case):
        # 准备用例数据
        user = self.random_user()
        email = self.random_email()
        url = conf.get("env","url") +case["url"]
        case["data"] = case["data"].replace("@username@",user)
        case["data"] = case["data"].replace("@email@",email)
        if case["title"] == "注册失败-用户名已注册" or case["title"] == "注册失败-邮箱已注册":
            case["data"] = CaseData.replace_data(case["data"])
        data = eval(case["data"])
        print(data)
        headers = eval(conf.get("env","headers"))
        method = case["method"]
        if case["title"]!="注册成功":
            expected = eval(case["expected"])
        row = case["case_id"]+1
        # 发送请求
        response = self.request.send(url=url,json=data,headers=headers,method=method)
        res = response.json()
        if case["title"] == "注册成功":
            CaseData.pass_username = jsonpath.jsonpath(res,"$.username")[0]
            CaseData.passemail = email
            expected = eval(CaseData.replace_data(case["expected"]))
        print("预期结果",expected)
        print("实际结果",res)
        # 断言
        try:
            if case["assert"]=="u":
                self.assertEqual(res["username"],expected["username"])
            elif case["assert"]=="e":
                self.assertEqual(res["email"],expected["email"])
            elif case["assert"]=="p":
                self.assertEqual(res["password"],expected["password"])
            elif case["assert"] == "pc":
                self.assertEqual(res["password_confirm"], expected["password_confirm"])
            elif case["assert"]=="nfe":
                self.assertEqual(res["non_field_errors"],expected["non_field_errors"])

        except AssertionError as e:
            self.excel.write_data(row=row,column=8,value="不通过")
            raise e
        else:
            self.excel.write_data(row=row,column=8,value="通过")

    def random_user(self):
        username = "".join(random.sample("1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM", 6))
        return username


    def random_email(self):
        email = ("".join(random.sample("1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM", 4))
                 + random.choice(("@163.com", "@126.com", "@qq.com")))
        return email
Exemplo n.º 12
0
class TestInfo(unittest.TestCase):
    excel = ReadExcel(case_file, "info")
    cases = excel.read_data()
    request = SendRequest()
    db = DB()

    @classmethod
    def setUpClass(cls) -> None:
        """进行登录"""
        # 1、准备登录的数据
        url = conf.get("env", "url") + "/member/login"
        data = {
            "mobile_phone": conf.get("test_data", "admin_phone"),
            "pwd": conf.get("test_data", "admin_pwd")
        }
        headers = eval(conf.get("env", "headers"))
        # 3、发送请求,进行登录
        response = cls.request.send(url=url, method="post", json=data, headers=headers)
        # 获取返回的数据
        res = response.json()
        # 3、提取token,保存为类属性
        token = jsonpath.jsonpath(res, "$..token")[0]
        token_type = jsonpath.jsonpath(res, "$..token_type")[0]
        # 将提取到的token设为CaseData类属性
        CaseData.admin_token_value = token_type + " " + token

    @data(*cases)
    def test_info(self, case):
        # 第一步,准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(CaseData, "admin_token_value")
        expected = eval(case["expected"])
        row = case["case_id"] + 1

        # 第二步,发送请求,获取结果
        response = self.request.send(url=url, method=method, json=data, headers=headers)
        res = response.json()

        # 第三步,断言比对预期结果和实际结果
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])

        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            print("预期结果", expected)
            print("实际结果", res)
            log.error("用例{}执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            print("预期结果", expected)
            print("实际结果", res)
            log.error("用例{}执行通过".format(case["title"]))
Exemplo n.º 13
0
class TestUpdate(unittest.TestCase):
    excel = ReadExcel(case_file, "update")
    cases = excel.read_data()
    request = SendRequest()
    db = DB()

    @classmethod
    def setUpClass(cls):
        # 1、准备登录的数据
        url = conf.get("env", "url") + "/member/login"
        data = {
            "mobile_phone": conf.get("test_data", "phone"),
            "pwd": conf.get("test_data", "pwd")
        }
        headers = eval(conf.get("env", "headers"))
        # 3、发送请求,进行登录
        response = cls.request.send(url=url, method="post", json=data, headers=headers)
        # 获取返回的数据
        res = response.json()
        # 3、提取token,保存为类属性
        token = jsonpath.jsonpath(res, "$..token")[0]
        token_type = jsonpath.jsonpath(res, "$..token_type")[0]
        # 将提取到的token设为类属性
        CaseDate.token_value = token_type + " " + token
        # 提取用户的id,保存为类属性
        CaseDate.member_id = str(jsonpath.jsonpath(res, "$..id")[0])

    @data(*cases)
    def test_update(self, case):
        # 第一步:准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]
        data = eval(replace_data(case["data"]))
        # 替换参数中的用户id
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(CaseDate, "token_value")
        # 在请求头中加入setupclass中提取出来的token
        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 第二步:发送请求,获取结果
        print("请求参数为:",data,type(data))
        response = self.request.send(url=url, method=method, json=data, headers=headers)
        res = response.json()
        # 第三步:断言(比对预期结果和实际结果)
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
        except AssertionError as e:
            print("预期结果:", expected)
            print("实际结果:", res)
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例:{},执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{},执行未通过".format(case["title"]))
Exemplo n.º 14
0
class TestInvest(unittest.TestCase):
    excel = ReadExcel(data_file_path, "invest")
    cases = excel.read_data()
    http = HandleRequest()

    @data(*cases)
    def test_invest(self,case):
        #----------第一步:准备用例数据------------
        url = conf.get_str("env", "url") + case["url"]
        #请求参数
        case["data"] = replace_data(case["data"])
        data = eval(case["data"])
        #请求方法
        method = case["method"]
        #请求头
        headers = eval(conf.get_str("env", "headers"))
        if case["interface"] != "login":
            headers["Authorization"] = getattr(TestData, "token_data")
            #添加请求头中的token
        #预期结果
        expected = eval(case["expected"])
        #用例所在行
        row = case["case_id"] + 1

        #------------第二步:发送请求-------------
        res = self.http.send(url=url, json=data, method=method, headers=headers)
        result = res.json()
        if case["interface"] == "login":
            #提取用户id和token
            token_type = jsonpath.jsonpath(result, "$..token_type")[0]
            token = jsonpath.jsonpath(result, "$..token")[0]
            token_data = token_type + " " + token
            id = jsonpath.jsonpath(result, "$..id")[0]
            setattr(TestData, "token_data", token_data)
            setattr(TestData, "member_id", str(id))

        elif case["interface"] == "add":
            #提取项目id
            loan_id = jsonpath.jsonpath(result, "$..id")[0]
            setattr(TestData, "loan_id", str(loan_id))

        #第三步:对比结果(断言
        try:
            self.assertEqual(expected["code"], result["code"])
            self.assertEqual(expected["msg"], result["msg"])
            #判断是否需要sql校验

        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            my_log.info("用例:{}--->执行未通过".format(case["title"]))
            print("预期结果: {}".format(expected))
            print("实际结果: {}".format(result))
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            my_log.info("用例: {}--->执行通过".format(case["title"]))
Exemplo n.º 15
0
class TestRegister(unittest.TestCase):
    excel = ReadExcel(case_path, 'register')
    case_data = excel.read_excel()
    http = HandleRequest()
    db=Hande_DB()

    @data(*case_data)
    def test_register(self, case):
        # 准备测试数据
        # 拼接完整的接口地址
        url = conf.get('env', 'url') + '/member/register'
        # 请求方法
        method = case['method']
        if '#phone#' in case['data']:
            phone = self.random_phone()
            case['data'] = case['data'].replace('#phone#', phone)
        data = eval(case['data'])

        expected = eval(case['expected'])
        headers = eval(conf.get('env', 'headers'))
        row = case['case_id'] + 1
        # 2、发送请求
        response = self.http.send(url=url, method=method, json=data, headers=headers)
        res = response.json()

        # 3、比对预期结果与实际结果
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            if case['check_sql']:
                print(case['check_sql'],type(case['check_sql']))
                sql=case['check_sql'].format(conf.get('env','phone'))
                count=self.db.count(sql)
                self.assertEqual(count,1)
        except AssertionError as e:
            self.excel.write_excel(row=row, column=8, value='未通过')
            mylog.info('用例:{}----->执行未通过'.format(case['title']))
            mylog.error(e)
            print("预期结果:{}".format(expected))
            print("实际结果:{}".format(res))
            raise e
        else:
            self.excel.write_excel(row=row, column=8, value='已通过')
            mylog.info('用例:{}----->执行已通过'.format(case['title']))

    @staticmethod
    def random_phone():
        phone = '13'
        for i in range(9):
            phone += str(random.randint(0, 9))
        return phone

    @classmethod
    def tearDownClass(cls) :
        cls.db.close()
Exemplo n.º 16
0
class TestWithdraw(unittest.TestCase):
    excel = ReadExcel(data_file_path, "withdraw")
    cases = excel.read_data()
    http = HandleRequest()
    db = HandleDB()

    @data(*cases)
    def test_withdraw(self, case):
        # 第一步:准备测试用例数据
        url = conf.get_str("env", "url") + case["url"]
        data = eval(replace_data(case["data"]))
        method = case["method"]
        headers = eval(conf.get_str("env", "headers"))
        if case["interface"] != "login":
            headers["Authorization"] = getattr(TestData, "token_data")

        expected = eval(case["expected"])
        row = case["case_id"] + 1
        if case["check_sql"]:
            sql = replace_data(case["check_sql"])
            start_money = self.db.get_one(sql)[0]

        res = self.http.send(url=url,
                             method=method,
                             json=data,
                             headers=headers)
        result = res.json()
        if case["interface"] == "login":
            id = jsonpath.jsonpath(result, "$..id")[0]
            setattr(TestData, "member_id", str(id))
            token_type = jsonpath.jsonpath(result, "$..token_type")[0]
            token = jsonpath.jsonpath(result, "$..token")[0]
            token_data = token_type + " " + token
            setattr(TestData, "token", token)

        try:
            self.assertEqual(expected["code"], result["code"])
            self.assertEqual(expected["msg"], result["msg"])
            if case["check_sql"]:
                sql = replace_data(case["check_sql"])
                end_money = self.db.get_one(sql)[0]
                withdraw_money = decimal.Decimal(str(data["amount"]))
                my_log.info("取现之前金额为:{}\n取现金额为:{}\n取现之后金额为:{}".format(
                    start_money, withdraw_money, end_money))
                self.assertEqual(withdraw_money, start_money - end_money)

        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            my_log.info("用例:{}---->执行未通过".format(case["title"]))
            print("预期结果:{}".format(expected))
            print("实际结果:{}".format(result))
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            my_log.info("用例:{}---->执行未通过".format(case["title"]))
Exemplo n.º 17
0
class TestWithdraw(unittest.TestCase):
    excel = ReadExcel(file_path, "withdraw")
    cases = excel.read_data()
    request = SendRequest()
    db = DB()

    @data(*cases)
    def test_withdraw(self, case):
        # 第一步:准备用例数据
        url = conf.get("env", "url") + case["url"]
        case["data"] = case["data"].replace("#phone#", conf.get("test_data", "phone"))
        case["data"] = case["data"].replace("#pwd#", conf.get("test_data", "pwd"))
        headers = eval(conf.get("env", "headers"))
        # 判断是否是取现接口,取现接口则加上请求头
        if case["interface"].lower() == "withdraw":
            headers["Authorization"] = self.token_value
            case["data"] = case["data"].replace("#member_id#", str(self.member_id))
        data = eval(case["data"])
        expected = eval(case["expected"])
        method = case["method"]
        row = case["case_id"] + 1
        # 判断是否需要进行sql校验
        if case["check_sql"]:
            sql = case["check_sql"].format(conf.get("test_data","phone"))
            start_money = self.db.find_one(sql)["leave_amount"]
        # 第二步:调用接口,获取实际结果
        response = self.request.send(url=url, method=method, json=data, headers=headers)
        res = response.json()
        # 判断是否是登录接口
        if case["interface"].lower() == "login":
            # 提取用户id保存为类属性
            TestWithdraw.member_id = jsonpath.jsonpath(res, "$..id")[0]
            token = jsonpath.jsonpath(res, "$..token")[0]
            token_type = jsonpath.jsonpath(res, "$..token_type")[0]
            # 提取token,保存为类属性
            TestWithdraw.token_value = token_type + " " + token
        # 第三步:断言(比对预期结果和实际结果)
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            if case["check_sql"]:
                sql = case["check_sql"].format(conf.get("test_data","phone"))
                end_money = self.db.find_one(sql)["leave_amount"]
                # 比对取现金额是否正确
                self.assertEqual(Decimal(str(data["amount"])),start_money-end_money)
        except AssertionError as e:
            print("预期结果:", expected)
            print("实际结果:", res)
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例:{},执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{},执行未通过".format(case["title"]))
Exemplo n.º 18
0
class TestInvest(unittest.TestCase):
    excel = ReadExcel(file_path, "invest")
    cases = excel.read_data()
    http = HandleRequest()

    @data(*cases)
    def test_invest(self, case):
        # 第一步:准备用例数据
        # 获取url
        url = conf.get_str("env", "url") + case["url"]
        # 获取数据
        case["data"] = replace_data(case["data"])
        data = eval(case["data"])
        # 请求头
        headers = eval(conf.get_str("env", "headers"))
        if case["interface"] != "login":
            headers["Authorization"] = getattr(TestData, "token_data")
        # 预期结果
        expected = eval(case["expected"])
        # 请求方法
        method = case["method"]
        # 用例所在的行
        row = case["case_id"] + 1
        # 第二步:发送请求
        res = self.http.send(url=url,
                             method=method,
                             json=data,
                             headers=headers)
        json_data = res.json()
        if case["interface"] == "login":
            # 如果是登录的用例,提取对应的token,和用户id,保存为TestData这个类的类属性,用来给后面的用例替换
            token_type = jsonpath.jsonpath(json_data, "$..token_type")[0]
            token = jsonpath.jsonpath(json_data, "$..token")[0]
            token_data = token_type + " " + token
            setattr(TestData, "token_data", token_data)
            id = jsonpath.jsonpath(json_data, "$..id")[0]
            setattr(TestData, "member_id", str(id))
        elif case["interface"] == "add":
            # 如果是添加项目,则提取项目id
            id = jsonpath.jsonpath(json_data, "$..id")[0]
            setattr(TestData, "loan_id", str(id))
        # 第三步:断言
        try:
            self.assertEqual(expected["code"], json_data["code"])
            self.assertEqual(expected["msg"], json_data["msg"])

        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            my_log.info("用例:{}--->执行未通过".format(case["title"]))
            print("预取结果:{}".format(expected))
            print("实际结果:{}".format(json_data))
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            my_log.info("用例:{}--->执行通过".format(case["title"]))
class TestCaseWithdraw(unittest.TestCase):
    readexcel = ReadExcel(filename=os.path.join(DATAPATH,
                                                conf.get('workbook', 'name')),
                          sheetname=conf.get('workbook', 'sheet04'))
    cases = readexcel.read_excel()
    send = SendRequest()
    headers = eval(conf.get('env', 'headers'))
    base_url = conf.get('env', 'url')
    connet = Connet()
    sql = 'select leave_amount from futureloan.member WHERE  mobile_phone = {}'.format(
        conf.get('env', 'phone'))
    replacedata = ReplaceData()

    @data(*cases)
    def testcase_withdraw(self, case):
        # case_id  title  method  url  data  expected  result  chk_sql interface
        row = case['case_id'] + 1
        method = case['method']
        url = self.base_url + case['url']
        data = case['data']
        data = eval(self.replacedata.replacedata(data))
        expected = eval(case['expected'])
        chk_sql = case['chk_sql']
        if chk_sql:
            sql_data_start = self.connet.select_data(sql=self.sql)
            leave_amount_start = sql_data_start['leave_amount']
        res_info = self.send.sendrequest(method=method,
                                         url=url,
                                         headers=self.headers,
                                         json=data)
        res_info = res_info.json()
        if case['interface'] == 'login':
            print(res_info)
            ReplaceData.member_id = jsonpath.jsonpath(res_info, '$..id')[0]
            token = jsonpath.jsonpath(res_info, '$..token')[0]
            token_type = jsonpath.jsonpath(res_info, '$..token_type')[0]
            self.headers['Authorization'] = '{} {}'.format(token_type, token)
        try:
            print('实际结果:{}'.format(res_info))
            print('期望结果:{}'.format(expected))
            if chk_sql:
                sql_data_end = self.connet.select_data(sql=self.sql)
                leave_amount_end = sql_data_end['leave_amount']
                self.assertEqual(Decimal(str(data['amount'])),
                                 (leave_amount_start - leave_amount_end))
            self.assertEqual(expected['code'], res_info['code'])
            self.assertEqual(expected['msg'], res_info['msg'])
            self.readexcel.write_excel(row=row, column=8, value='pass')
            log.info('{}用例测试通过'.format(case['title']))
        except AssertionError as e:
            self.readexcel.write_excel(row=row, column=8, value='fail')
            log.error('{}用例测试不通过'.format(case['title']))
            log.exception(e)
            raise e
Exemplo n.º 20
0
class TestRegister(unittest.TestCase):
    excel = ReadExcel(case_file, "register")
    cases = excel.read_data()
    request = SendRequest()
    db = DB()

    @data(*cases)
    def test_register(self, case):
        # 第一步,准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]
        # 生成一个手机号码
        phone = self.random_phone()
        # 替换用例数据
        case["data"] = case["data"].replace("#phone#", phone)
        data = eval(case["data"])
        headers = eval(conf.get("env", "headers"))
        expected = eval(case["expected"])
        row = case["case_id"] + 1

        # 第二步,发送请求,获取结果
        response = self.request.send(url=url,
                                     method=method,
                                     json=data,
                                     headers=headers)
        res = response.json()
        if case["check_sql"]:
            sql = "SELECT mobile_phone FROM futureloan.member WHERE mobile_phone={}".format(
                phone)
            user = self.db.find_one(sql)["mobile_phone"]

        # 第三步,断言比对预期结果和实际结果
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])

            if case["check_sql"]:
                self.assertEqual(user, phone)

        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例{}执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.error("用例{}执行通过".format(case["title"]))

    def random_phone(self):
        phone = "136"
        n = random.randint(100000000, 999999999)
        phone += str(n)[1:]
        return phone
Exemplo n.º 21
0
class TestAdd(unittest.TestCase):
    excel = ReadExcel(file_path, "add")
    cases = excel.read_data()
    http = HandleRequest()
    db = HandleDB()

    @data(*cases)
    def test_add(self, case):
        # 第一步:准备用例数据
        url = conf.get_str("env", "url") + case["url"]
        case["data"] = replace_data(case["data"])
        data = eval(case["data"])
        headers = eval(conf.get_str("env", "headers"))
        if case["interface"] != "login":
            headers["Authorization"] = getattr(TestData, "token_data")
        expected = eval(case["expected"])
        method = case["method"]
        row = case["case_id"] + 1
        # 第二步:发送请求
        if case["check_sql"]:
            sql = replace_data(case["check_sql"])
            s_loan_num = self.db.count(sql)
        res = self.http.send(url=url,
                             method=method,
                             json=data,
                             headers=headers)
        result = res.json()
        if case["interface"] == "login":
            token_type = jsonpath.jsonpath(result, "$..token_type")[0]
            token = jsonpath.jsonpath(result, "$..token")[0]
            token_data = token_type + " " + token
            setattr(TestData, "token_data", token_data)
            id = jsonpath.jsonpath(result, "$..id")[0]
            setattr(TestData, "admin_member_id", str(id))
        # 第三步:比对结果(断言)
        try:
            self.assertEqual(expected["code"], result["code"])
            self.assertEqual(expected["msg"], result["msg"])
            if case["check_sql"]:
                sql = replace_data(case["check_sql"])
                end_loan_num = self.db.count(sql)
                self.assertEqual(end_loan_num - s_loan_num, 1)

        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            my_log.info("用例:{}---->执行未通过".format(case["title"]))
            print("预期结果:{}".format(expected))
            print("实际结果:{}".format(result))
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            my_log.info("用例:{}---->执行未通过".format(case["title"]))
Exemplo n.º 22
0
class TestAdd(unittest.TestCase):
    excel = ReadExcel(data_path, 'add')
    add_data = excel.read_excel()
    http = HeadleRequest()

    @data(*add_data)
    def test_add(self, case):
        # 准备用例数据
        #拼接url
        url = conf.get('env', 'url') + case['url']
        #获取数据
        case['data'] = handle_data(case['data'])
        data = eval(case['data'])
        #获取请求方法
        method = case['method']
        # 获取期望结果
        expected = eval(case['expected'])
        #获取请求头
        headers = eval(conf.get('env', 'headers'))
        if case['interface'] != 'login':
            headers['Authorization'] = getattr(TestData, 'token_data')
        # 获取row
        row = case['case_id'] + 1

        # 发送请求
        response = self.http.send(url=url,
                                  method=method,
                                  json=data,
                                  headers=headers)
        res = response.json()

        if case['interface'] == 'login':
            id = jsonpath.jsonpath(res, '$..id')[0]
            setattr(TestData, 'admin_member_id', str(id))
            token_type = jsonpath.jsonpath(res, '$..token_type')[0]
            token = jsonpath.jsonpath(res, '$..token')[0]
            token_data = token_type + ' ' + token
            setattr(TestData, 'token_data', token_data)

        # 断言
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
        except AssertionError as e:
            self.excel.write(row=row, column=8, value='未通过')
            mylog.info('用例:{}---->执行未通过'.format(case['title']))
            print('预期结果:{}'.format(expected))
            print('实际结果:{}'.format(res))
            raise e
        else:
            self.excel.write(row=row, column=8, value='通过')
            mylog.info('用例:{}---->执行通过'.format(case['title']))
Exemplo n.º 23
0
class TestRegister(unittest.TestCase):
    excel = ReadExcel(data_path, 'register')
    register_data = excel.read_excel()
    http = HeadleRequest()

    @data(*register_data)
    def test_register(self, case):
        #准备用例数据
        # 获取url
        url = conf.get('env', 'url') + case['url']
        # 请求方法
        method = case['method']
        #判断是否有手机号需要替换
        if '#phone#' in case['data']:
            phone = self.random_phone()
            case['data'] = case['data'].replace('#phone#', phone)
        data = eval(case['data'])
        #期望结果
        expected = eval(case['expected'])
        #获取请求头
        headers = eval(conf.get('env', 'headers'))
        #获取用例id
        row = case['case_id'] + 1

        #发送请求
        response = self.http.send(url=url,
                                  method=method,
                                  json=data,
                                  headers=headers)
        res = response.json()

        #断言
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
        except AssertionError as e:
            self.excel.write(row=row, column=8, value='未通过')
            mylog.info('用例:{}---->执行未通过'.format(case['title']))
            print('期望结果:{}'.format(expected))
            print('实际结果:{}'.format(res))
            raise e
        else:
            self.excel.write(row=row, column=8, value='通过')
            mylog.info('用例:{}---->执行通过'.format(case['title']))

    @staticmethod
    def random_phone():
        phone = '136'
        for i in range(8):
            phone += str(random.randint(0, 9))
        return phone
Exemplo n.º 24
0
class Testcases(unittest.TestCase):
    excel = ReadExcel(case_file, 'testcases')
    datas = excel.read_data()
    request = SendRequest()

    @classmethod
    def setUpClass(cls) -> None:
        url = conf.get('env', 'url') + '/user/login/'
        method = 'post'
        data = {
            'username': conf.get('test_data', 'user'),
            'password': conf.get('test_data', 'pwd')
        }
        response = cls.request.send(url=url, method=method, json=data)
        res = response.json()
        CaseData.token = 'JWT ' + jsonpath.jsonpath(res, '$.token')[0]

    @data(*datas)
    def test_cases(self, case):
        # 准备测试数据
        url = conf.get('env', 'url') + case['url']
        method = case['method']
        headers = {'Authorization': CaseData.token}
        CaseData.case_name = random_data()
        case['data'] = replace_data(case['data'])
        data = eval(case['data'])
        expected = eval(case['expected'])
        row = case['case_id'] + 1
        # 获取结果
        response = self.request.send(url=url,
                                     method=method,
                                     headers=headers,
                                     json=data)
        res = response.json()
        status = response.status_code

        # 对预期结果和相应结果进行断言
        try:
            self.assertEqual(expected['status'], status)
            if '成功' not in case['title']:
                self.assertIn(expected['msg'], str(res.values()))

        except AssertionError as E:
            print('预期结果:', expected)
            print('实际结果:', status, res)
            self.excel.write_data(row=row, column=8, value='不通过')
            log.error('{}用例不通过'.format(case['title']))
            log.exception(E)
            raise E
        else:
            self.excel.write_data(row=row, column=8, value='通过')
Exemplo n.º 25
0
class TestLogin(unittest.TestCase):
    excel = ReadExcel(case_file, "invest")
    cases = excel.read_data()
    request = SendRequest()

    @data(*cases)
    def test_login(self, case):
        # 第一步:准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]
        case["data"] = replace_data(case["data"])
        data = eval(case["data"])
        headers = eval(conf.get("env", "headers"))
        # 判断是否是登录接口,不是登录接口则需要添加token
        if case["interface"] != "login":
            headers["Authorization"] = getattr(CaseDate, "token_value")

        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 第二步:发送请求,获取结果
        response = self.request.send(url=url,
                                     method=method,
                                     json=data,
                                     headers=headers)
        res = response.json()
        # 发送请求后,判断是否是登陆接口
        if case["interface"].lower() == "login":
            # 提取用户id保存为类属性
            CaseDate.member_id = str(jsonpath.jsonpath(res, "$..id")[0])
            token = jsonpath.jsonpath(res, "$..token")[0]
            token_type = jsonpath.jsonpath(res, "$..token_type")[0]
            # 提取token,保存为类属性
            CaseDate.token_value = token_type + " " + token
        # 判断是否是加标的用例,如果是的则请求标id
        if case["interface"] == "add":
            CaseDate.loan_id = str(jsonpath.jsonpath(res, "$..id")[0])
        # 第三步:断言(比对预期结果和实际结果)
        try:
            self.assertEqual(expected["code"], res["code"])
            # self.assertEqual(expected["msg"], res["msg"])
            self.assertIn(expected["msg"], res["msg"])

        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例:{},执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{},执行未通过".format(case["title"]))
Exemplo n.º 26
0
class TestLogin(unittest.TestCase):
    excel = ReadExcel(data_file_path, "login")
    cases = excel.read_data()
    http = HandleRequest()

    @data(*cases)
    def test_login(self, case):
        # ------第一步:准备用例数据------------
        # 拼接完整的接口地址
        url = conf.get_str("env", "url") + case["url"]
        # 请求的方法
        method = case["method"]
        # 请求参数
        data = eval(case["data"])
        # 请求头
        headers = eval(conf.get_str("env", "headers"))
        # 预期结果
        expected = eval(case["expected"])
        # 该用例在表单的中所在行
        row = case["case_id"] + 1

        # ------第二步:发送请求到接口,获取实际结果--------
        response = self.http.send(url=url,
                                  method=method,
                                  json=data,
                                  headers=headers)
        result = response.json()

        # -------第三步:比对预期结果和实际结果-----
        try:
            # 业务码断言
            self.assertEqual(expected["code"], result["code"])
            # msg断言
            self.assertEqual((expected["msg"]), result["msg"])
        except AssertionError as e:
            # excel中回写结果
            self.excel.write_data(row=row, column=8, value="未通过")
            # 记录apicases.xlsx日志
            my_log.info("用例:{}--->执行未通过".format(case["title"]))
            my_log.error(e)
            # 报告中打印预期和实际结果
            print("预取结果:{}".format(expected))
            print("实际结果:{}".format(result))
            raise e
        else:
            # excel中回写结果
            self.excel.write_data(row=row, column=8, value="通过")
            # 记录日志
            my_log.info("用例:{}--->执行通过".format(case["title"]))
Exemplo n.º 27
0
class TestLogin(unittest.TestCase):
    excel = ReadExcel(case_file, "login")
    cases = excel.read_data()
    request = SendRequest()
    db = DB()
    # 读取excel用例数据

    @data(*cases)  # 进行拆包
    def test_login(self, case):
        """登陆的测试用例"""
        # 第一步:准备用例数据

        url = conf.get("evn", "url") + case["url"]
        headers = eval(conf.get("evn", "headers"))
        method = case["method"]

        # 登陆账号使用配置文件里面预设值的
        TestLogin.mobile = eval(conf.get("test_data", "mobile"))
        case["data"] = case["data"].replace("#mobile#", str(self.mobile))

        TestLogin.password = eval(conf.get("test_data", "password"))
        case["data"] = case["data"].replace("#password#", str(self.password))

        data = eval(case["data"])

        expected = eval(case["expected"])
        row = case["case_id"] + 1

        #第二步:发送请求,获取结果
        response = self.request.send(url=url,
                                     method=method,
                                     json=data,
                                     headers=headers)
        res = response.json()

        # 第三步:断言,回写数据
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])

        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例:{},执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{},执行未通过".format(case["title"]))
Exemplo n.º 28
0
class TestInvest(unittest.TestCase):
    excel = ReadExcel(case_file, "invest")
    cases = excel.read_data()
    request = SendRequest()

    @data(*cases)
    def test_invest(self, case):
        # 第一步,准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]
        case["data"] = replace_data(case["data"])
        data = eval(case["data"])
        headers = eval(conf.get("env", "headers"))
        if case["interface"] != "login":
            headers["Authorization"] = getattr(CaseData, "token_value")
        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 第二步,发送请求,获取结果
        response = self.request.send(url=url,
                                     method=method,
                                     json=data,
                                     headers=headers)
        res = response.json()
        if case["interface"].lower() == "login":
            CaseData.member_id = str(jsonpath.jsonpath(res, "$..id")[0])
            token = jsonpath.jsonpath(res, "$..token")[0]
            token_type = jsonpath.jsonpath(res, "$..token_type")[0]
            CaseData.token_value = token_type + " " + token

        if case["interface"] == "add":
            CaseData.loan_id = str(jsonpath.jsonpath(res, "$..id")[0])

        # 第三步,断言比对预期结果和实际结果
        try:
            self.assertEqual(expected["code"], res["code"])
            # self.assertEqual(expected["msg"], res["msg"])
            self.assertIn(expected["msg"], res["msg"])
        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例{}执行未通过".format(case["title"]))
            log.exception(e)
            raise e

        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.error("用例{}执行通过".format(case["title"]))
Exemplo n.º 29
0
class Test_Login(unittest.TestCase):
    excel = ReadExcel(case_file, "login")
    cases = excel.read_data()
    request = SendRequests()

    @data(*cases)  #可变长参数,接收多条用例,因为cases中有多条用例数据,多条字典
    def test001_login(self, case):
        #第一步:准备接口请求
        url = conf.get("env", "url") + case["url"]
        print(url)
        method = case['method']
        print(method)
        data = eval(case['data'])
        #eval这个内置函数的作用:执行一个字符串表达式,并且返回执行后的结果
        headers = eval(conf.get('env', 'headers'))
        #从配置文件文件config.ini中取header等常用请求头信息或者接口参数
        expected = eval(case['expected'])
        #从excel取expected预期结果内容
        row = case['case_id'] + 1
        #每跑一行,case_id + 1

        #第二步,发送接口请求
        response = self.request.send(method=method,
                                     url=url,
                                     headers=headers,
                                     data=data)
        print(response.json())
        result = response.json()

        #第三步:接口的断言
        try:  #期待值和实际结果值对比断言
            self.assertEqual(expected['code'], result['code'])
            self.assertEqual(expected['msg'], result['msg'])
        except Exception as e:
            #定义异常,异常如何
            self.excel.write_data(row, column=8, value='未通过')
            #写入未通过结果
            log.error('用例{}执行不通过'.format(case['title']))
            #format格式化,把case中的title写入{}中
            log.exception(e)
            #抛出异常
            raise e
            #手动触发异常
        else:  #否则就正常,正常又如何
            self.excel.write_data(row=row, column=8, value='通过')
            log.info('用例{}执行通过'.format(case['title']))
Exemplo n.º 30
0
class LoginPage(BasePage):

    # 首页登录按钮
    homeLoginBtn = (eleData.read_excel(9, 3))
    """登录页元素:用户名,密码,验证码,登录按钮,错误提示,注册按钮"""
    userNameEle = (eleData.read_excel(2, 3))
    passWordEle = (eleData.read_excel(3, 3))
    verifyImg = (eleData.read_excel(4, 3))
    verifyCode = (eleData.read_excel(5, 3))
    loginBtn = (eleData.read_excel(6, 3))
    errorMessage = (eleData.read_excel(7, 3))
    signInBtn = (eleData.read_excel(8, 3))

    testLoginData = ReadExcel("elementData.xlsx", "loginData")

    def home_login_btn(self):
        """
        首页点击登录按钮
        :return:
        """
        self.click(self.homeLoginBtn)

    def login_fun(self, username='******', password='******'):
        """
        统一登录函数
        :param username: 用户名
        :param password: 密码
        :param verify: 验证码
        :return:
        """
        self.input(self.userNameEle, username)
        self.input(self.passWordEle, password)
        self._verify(self.verifyImg, img='../report/Image/verify/verify.png')
        self.input(self.verifyCode, self.ver)
        self.sleep(1)
        self.click(self.loginBtn)

    def get_fail_text(self):
        """
        登录失败时提示信息
        :return:
        """
        info = self.get_value(self.errorMessage)
        logger_F.info(f"login failed : {info}")
        return info