Example #1
0
 def __init__(self):
     """初始化方法中,连接到数据库"""
     # 建立连接
     self.conn = pymysql.connect(host=conf.get("mysql", "host"),
                                 port=conf.getint("mysql", "port"),
                                 user=conf.get("mysql", "user"),
                                 password=conf.get("mysql", "password"),
                                 charset="utf8",
                                 cursorclass=pymysql.cursors.DictCursor)
     # 创建一个游标对象
     self.cur = self.conn.cursor()
Example #2
0
 def testlogin(cls):
     # 准备数据
     url = conf.get("env", "url") + "/user/login/"
     data = {
         "username": conf.get("user_data", "usernamelogin"),
         "password": conf.get("user_data", "passwordlogin")
     }
     response = request(method="post", url=url, json=data)
     res = response.json()
     token = "JWT" + " " + jsonpath.jsonpath(res, "$..token")[0]
     return token
Example #3
0
def business_fixture():
    # 前置条件
    driver = webdriver.Chrome(options=get_option())
    driver.implicitly_wait(30)
    login_page = Login_Page(driver)
    index_page = Index_Page(driver)
    add_business = AddBusiness(driver)
    #     调用登录先去登录
    login_page.login(conf.get("user_data", "mobile"),
                     conf.get("user_data", "pwd"))

    yield index_page, add_business
    #     后置条件
    driver.quit()
Example #4
0
def warehouse_fixture():
    # 前置条件
    driver = webdriver.Chrome(options=get_option())
    driver.implicitly_wait(30)
    login_page = Login_Page(driver)
    index_page = Index_Page(driver)
    warehouse_page = WareHouse(driver)
    #     调用登录先去登录
    login_page.login(conf.get("user_data", "mobile"),
                     conf.get("user_data", "pwd"))
    # 点击仓库管理
    index_page.click_warehouse()
    yield index_page, warehouse_page
    #     后置条件
    driver.quit()
Example #5
0
def order_fixture():
    # 前置条件
    driver = webdriver.Chrome(options=get_option())
    driver.implicitly_wait(30)
    login_page = Login_Page(driver)
    index_page = Index_Page(driver)
    order_page = Order_Page(driver)
    order_search = Order_Search(driver)
    #     调用登录先去登录
    login_page.login(conf.get("user_data", "mobile"),
                     conf.get("user_data", "pwd"))
    # 点击订单
    index_page.click_order()
    yield index_page, order_page, order_search
    #     后置条件
    driver.quit()
Example #6
0
def quotedprice_fixture():
    # 前置条件
    driver = webdriver.Chrome(options=get_option())
    driver.implicitly_wait(30)
    login_page = Login_Page(driver)
    index_page = Index_Page(driver)
    business_page = AddBusiness(driver)
    quotedprice_page = QuotedPrice(driver)
    #     调用登录先去登录
    login_page.login(conf.get("user_data", "mobile"),
                     conf.get("user_data", "pwd"))
    # 点击报价模块
    index_page.click_quotedprice()
    yield index_page, business_page, quotedprice_page
    #     后置条件
    driver.quit()
Example #7
0
 def test_projects(self,case):
     #准备数据
     url=conf.get("env","url")+case["url"]
     method=case["method"]
     # 随机生成一个项目名称替换
     name=self.random_name()
     setattr(EnvData,"name",name)
     data=eval(replace_data(case["data"]))
     headers = {"Authorization":self.token}
     excepted=eval(replace_data(case["expected"]))
     row_id=case["case_id"]+1
     #发送请求
     response=request(method=method,url=url,json=data,headers=headers)
     res=response.json()
     #断言
     try:
         # 调用断言的方法进行断言
         assert_dict(excepted,res)
         # 判断是否需要进行sql校验,如果有sql语句,需要去数据库查询一下是否有一条该项目的数据
         if case["check_sql"]:
             sql = replace_data(case["check_sql"])
             res_namecount = self.db.find_count(sql)
             self.assertEqual(1, res_namecount)
     except AssertionError as e:
         self.excel.wirte_excel(row=row_id, column=8, value="不通过")
         my_log.error("用例{},{},不通过".format(case["case_id"], case["title"]))
         my_log.debug("预期结果:{}".format(excepted))
         my_log.debug("实际结果:{}".format(res))
         my_log.exception(e)
         # exception将捕获到异常记录到日志中(对应的等级是error)
         # 主动抛出异常
         raise e
     else:
         self.excel.wirte_excel(row=row_id, column=8, value="通过")
         my_log.info("用例{},{},通过".format(case["case_id"], case["title"]))
Example #8
0
def goods_fixture():
    # 前置条件
    driver = webdriver.Chrome(options=get_option())
    driver.implicitly_wait(20)
    login_page = Login_Page(driver)
    index_page = Index_Page(driver)
    search_page = Good_Search(driver)
    #     添加物品详情页面
    addGoods = AddGoods(driver)
    #     调用登录先去登录
    login_page.login(conf.get("user_data", "mobile"),
                     conf.get("user_data", "pwd"))
    #     登录完之后点击物品模块
    index_page.click_goods()

    yield addGoods, index_page, search_page
    #     后置条件
    driver.quit()
Example #9
0
def collcet_log():
    # 1.创建一个日志收集器
    mylog = logging.getLogger("dingqin")
    # 2.设置日志等级
    mylog.setLevel(conf.get("log", "level"))
    # 3.设置输出渠道以及输出渠道的等级(输出到文件)
    output = logging.FileHandler(log_filepath, encoding="utf8")
    output.setLevel(conf.get("log", "fh_level"))
    mylog.addHandler(output)
    # 输出到控制台
    sh = logging.StreamHandler()
    sh.setLevel(conf.get("log", "sh_level"))
    mylog.addHandler(sh)

    # 4.设置输出格式
    forms = conf.get("log", "formats")
    form = logging.Formatter(forms)
    output.setFormatter(form)
    sh.setFormatter(form)

    return mylog
Example #10
0
class Login_Page(BasePage):
    # 首页地址
    url = conf.get("env", "base_url") + conf.get("url", "login_url")

    def __init__(self, driver: Chrome):
        super().__init__(driver)
        self.driver.get(self.url)
        self.driver.maximize_window()

    def login(self, user, pwd):
        #         输入账号密码登录
        self.input_text(loc.mobile, user, "登录页面_输入账号")
        self.input_text(loc.pwd, pwd, "登录页面_输入密码")
        self.click_element(loc.login_btn, "登录页面_点击登录")

    def login_error_info(self):
        # 登录失败获取错误提示
        time.sleep(1)
        text = self.get_element_text(loc.login_error_info, "登录页面_登录失败错误提示信息")
        return text

    def refresh(self):
        # 刷新页面
        self.driver.refresh()
Example #11
0
def replace_data(data):
    # 替换数据
    while re.search("#(.*?)#", data):
        # 返回一个匹配对象
        res=re.search("#(.*?)#",data)
        # 获取匹配到的数据
        key=res.group()
        # 获取匹配规则中括号里面的内容
        item=res.group(1)
        try:
            value=conf.get("user_data",item)
        except:
            # 去EnvData这个类里面获取对应的属性(环境变量)
            value = getattr(EnvData, item)
        data=data.replace(key,value)

    return data
    def test_name_email_exist(self, case):
        # 准备数据
        # 随机生成一个用户名,保存为类属性
        username = self.random_username()
        setattr(EnvData, "username", username)
        # 随机生成一个email,保存为类属性
        email = self.random_email()
        setattr(EnvData, "email", email)
        url = conf.get("env", "url") + replace_data(case["url"])
        method = case["method"]
        # 随机生成的用户名去数据库查询,如果能查到count为1.否则为0,然后替换掉expected中的count
        if case["check_sql"]:
            sql = replace_data(case["check_sql"])
            namecount = self.db.find_count(sql)
            if namecount == 0:
                count = 0
                setattr(EnvData, "count", str(count))
            else:
                count = 1
                setattr(EnvData, "count", str(count))
        # 注册成功的预期结果比对了username,这个username是随机生成的,所以设置了动态参数获取
        case["expected"] = replace_data(case["expected"])
        excepted = eval(case["expected"])
        row_id = case["case_id"] + 1

        # 发送请求
        response = request(method=method, url=url)
        res = response.json()

        # 断言
        try:
            # 调用断言的方法进行断言
            assert_dict(excepted, res)
        except AssertionError as e:
            self.excel.wirte_excel(row=row_id, column=7, value="不通过")
            my_log.error("用例{},{},不通过".format(case["case_id"], case["title"]))
            my_log.debug("预期结果:{}".format(excepted))
            my_log.debug("实际结果:{}".format(res))
            my_log.exception(e)
            # exception将捕获到异常记录到日志中(对应的等级是error)
            # 主动抛出异常
            raise e
        else:
            self.excel.wirte_excel(row=row_id, column=7, value="通过")
            my_log.info("用例{},{},通过".format(case["case_id"], case["title"]))
 def test_register_login(self, case):
     # 准备数据
     url = conf.get("env", "url") + case["url"]
     method = case["method"]
     # 随机生成一个用户名和邮箱,保存为类属性
     username = self.random_username()
     email = self.random_email()
     # 登录成功的用例直接用上一条注册成功的用户名登录,登录成功的那条用例不需要新生成用户名
     if case["title"] != "登录成功":
         setattr(EnvData, "username", username)
         setattr(EnvData, "email", email)
     case["data"] = replace_data(case["data"])
     data = eval(case["data"])
     # 注册成功的预期结果比对了username,这个username是随机生成的,所以设置了动态参数获取
     case["expected"] = replace_data(case["expected"])
     excepted = eval(case["expected"])
     row_id = case["case_id"] + 1
     # 发送请求
     response = request(method=method, url=url, json=data)
     res = response.json()
     # 断言
     try:
         # 调用断言的方法进行断言
         assert_dict(excepted, res)
         # 判断是否需要进行sql校验,如果有sql语句,需要去数据库查询一下是否有一条该用户名的数据
         if case["check_sql"]:
             sql = replace_data(case["check_sql"])
             res_namecount = self.db.find_count(sql)
             self.assertEqual(1, res_namecount)
     except AssertionError as e:
         self.excel.wirte_excel(row=row_id, column=8, value="不通过")
         my_log.error("用例{},{},不通过".format(case["case_id"], case["title"]))
         my_log.debug("预期结果:{}".format(excepted))
         my_log.debug("实际结果:{}".format(res))
         my_log.exception(e)
         # exception将捕获到异常记录到日志中(对应的等级是error)
         # 主动抛出异常
         raise e
     else:
         self.excel.wirte_excel(row=row_id, column=8, value="通过")
         my_log.info("用例{},{},通过".format(case["case_id"], case["title"]))
Example #14
0
"""
============================
Author:丁琴
Time: 15:32
E-mail:[email protected]
Company:南京瓦丁科技限公司
============================
"""
import logging
from common.handle_confing import conf
from common.handle_path import LOG_DIR
import os

log_filepath = os.path.join(LOG_DIR, conf.get("log", "filename"))


def collcet_log():
    # 1.创建一个日志收集器
    mylog = logging.getLogger("dingqin")
    # 2.设置日志等级
    mylog.setLevel(conf.get("log", "level"))
    # 3.设置输出渠道以及输出渠道的等级(输出到文件)
    output = logging.FileHandler(log_filepath, encoding="utf8")
    output.setLevel(conf.get("log", "fh_level"))
    mylog.addHandler(output)
    # 输出到控制台
    sh = logging.StreamHandler()
    sh.setLevel(conf.get("log", "sh_level"))
    mylog.addHandler(sh)

    # 4.设置输出格式