コード例 #1
0
    def read_excel(self, sheet_name, section):
        try:
            wb = load_workbook(self.file_name)
            sheet = wb[sheet_name]
            Log().info('-----------------------------------------开始读取测试数据-----------------------------------------')
        except Exception as e:
            Log().error('---打开用例失败{}'.format(traceback.format_exc()))
            print(e)
        data_case = []
        final_data = []
        case_amount = eval(ReadConfig().cf.get(section, 'case_amount'))

        # column_name = ['CaseId', 'Module', 'Url', 'Method', 'Description', 'Param', 'ExpectedResult']
        # for row in range(2, sheet.max_row+1):
        #     row_data = {}
        #     for col, item in enumerate(column_name):
        #         row_data[item] =sheet.cell(row, col + 1).value
        #
        #     data_case.append(row_data)
        # wb.close()
        # print(data_case)
        # return data_case
        # 方法二

        for row in range(2, sheet.max_row + 1):
            # print(row)
            row_data = {}
            row_data['CaseId'] = sheet.cell(row, 1).value
            row_data['Module'] = sheet.cell(row, 2).value
            row_data['Url'] = sheet.cell(row, 3).value
            row_data['Method'] = sheet.cell(row, 4).value
            row_data['Description'] = sheet.cell(row, 5).value
            # 方法一:在字符串中替换tel,非常麻烦不可取,建议先变成字典然后再字典中转换
            # row_data['Param'] = sheet.cell(row, 6).value
            # if row_data['Param'].find('tel') != -1:
            #     Log().info('查看电话号码')
            #     new_tel = DoExcel(project_path.test_cases_path).read_tel()
            #     row_data['Param'] = eval(row_data['Param'].replace('tel', str(new_tel)))
            #     DoExcel(project_path.test_cases_path).write_tel(new_tel)
            # else:
            #     row_data['Param'] = eval(row_data['Param'])
            # 方法二
            row_data['Param'] = eval(sheet.cell(row, 6).value)
            if row_data['Param'].get('mobilephone') == 'tel':
                row_data['Param']['mobilephone'] = DoExcel(project_path.test_cases_path).read_tel()
                DoExcel(project_path.test_cases_path).write_tel(DoExcel(project_path.test_cases_path).read_tel())

            row_data['ExpectedResult'] = eval(sheet.cell(row, 7).value)
            data_case.append(row_data)
        wb.close()

        # 此处获取配置文件配置用例,0代表执行全部用例
        if case_amount == 0:
            final_data = data_case
        else:
            for i in case_amount:
                final_data.append(data_case[int(i) - 1])

        print(len(final_data), final_data)
        return final_data
コード例 #2
0
    def read_excel(self):
        """read模块把不同sheet页的用例根据配置文件设置全部取出,"""
        try:
            wb = load_workbook(self.file_name)
            Log().info(
                '-----------------------------------------开始读取测试数据-----------------------------------------'
            )
        except Exception as e:
            Log().error('---打开用例失败{}'.format(traceback.format_exc()))
            print(e)

        final_data = []
        case_amount = ReadConfig().case_amount()
        # column_name = ['CaseId', 'Module', 'Url', 'Method', 'Description', 'Param', 'ExpectedResult']
        # for row in range(2, sheet.max_row+1):
        #     row_data = {}
        #     for col, item in enumerate(column_name):
        #         row_data[item] =sheet.cell(row, col + 1).value
        #
        #     data_case.append(row_data)
        # wb.close()
        # print(data_case)
        # return data_case
        # 方法二
        for key in case_amount:  # 取到配置文件{'recharge':0,'Sheet1':[1,3,5]},
            data_case = []
            sheet = wb[key]  # key代表表单名
            for row in range(2, sheet.max_row + 1):
                # print(row)
                row_data = {}
                row_data['CaseId'] = sheet.cell(row, 1).value
                row_data['Module'] = sheet.cell(row, 2).value
                row_data['Url'] = sheet.cell(row, 3).value
                row_data['Method'] = sheet.cell(row, 4).value
                row_data['Description'] = sheet.cell(row, 5).value
                # 方法二
                row_data['Param'] = eval(sheet.cell(row, 6).value)
                if row_data['Param'].get('mobilephone') == 'tel':
                    row_data['Param']['mobilephone'] = DoExcel(
                        project_path.test_cases_path).read_tel()
                    DoExcel(project_path.test_cases_path).write_tel(
                        DoExcel(project_path.test_cases_path).read_tel())
                row_data['Sql'] = eval(sheet.cell(row, 7).value)
                row_data['ExpectedResult'] = eval(sheet.cell(row, 8).value)
                data_case.append(row_data)

            # 此处获取配置文件配置用例,0代表执行全部用例
            if case_amount[key] == 0:
                final_data += data_case
            else:
                for i in case_amount[key]:
                    final_data.append(data_case[int(i) - 1])
        wb.close()
        Log.info('测试用例共{}条,分别为:{}'.format(len(final_data), final_data))
        Log.info(
            '--------------------------------------------读取测试数据完毕-----------------------------------------'
        )
        print(len(final_data), final_data)
        return final_data
コード例 #3
0
 def is_login_sucess(self):
     current_title = self.get_current_title()
     current_url = self.get_current_url()
     if ("user/dashboard" or "user/deposit/"
         ) in current_url and "Online Lottery" in current_title:
         Log().info("登录成功,当前的地址为:" + current_url)
         return True
     Log().error("登录失败,请检查")
     return False
コード例 #4
0
    def read_tel(self):

        try:
            wb = load_workbook(self.file_name)
            sheet = wb['tel']
            tel = sheet.cell(1, 2).value
            Log().info('---读取电话号码{}'.format(tel))
        except Exception as e:
            Log().error('---读取电话号码失败{}'.format(e))
        wb.close()
        return tel
コード例 #5
0
    def write_tel(self, old_tel):
        try:
            wb = load_workbook(self.file_name)
            sheet = wb['tel']

        except Exception as e:
            Log().error('---更新电话号码失败{}'.format(e))
        new_tel = old_tel + 1
        sheet.cell(1, 2).value = new_tel
        Log().info('---更新电话号码{}'.format(new_tel))
        wb.save(self.file_name)
        wb.close()
コード例 #6
0
 def post_main(self, url, data, headers=None):
     try:
         if headers != None:
             res = requests.post(url=url, data=data, headers=headers)
         else:
             res = requests.post(url=url, data=data)
         res_code = res.status_code
         Log().info("成功发送POST请求,请求结果code为:%s,请求结果字段为:%s" %
                    (res_code, res.json()))
         return res.json()
     except Exception as e:
         Log().error("POST请求出错,出错原因:%s" % e)
         return {'code': 1, 'result': 'post请求出错,出错原因:%s' % e}
コード例 #7
0
 def setUpClass(cls):
     cls.s = requests.session()
     copy_excel(globalparam.data_path_name,globalparam.result_path)
     cls.run_method = Run_Method()
     cls.logger = Log()
     cls.logger.info(
         '############################### START ###############################')
コード例 #8
0
class Test_news():
    log = Log()

    @allure.feature("功能点:添加新闻")
    @allure.story("用例:用户新添加新闻")
    @pytest.mark.parametrize("title,author,abstract",
                             testdata["test_add_news_data"],
                             ids=["正常添加"])
    # @pytest.mark.skip('跳过该成功用例')
    def test_add_new(self, login_fixtrue, title, author, abstract):
        driver = login_fixtrue
        new = NewsPage(driver)
        with allure.step("点击进入新闻管理模块"):
            new.come_news()
            time.sleep(2)
        with allure.step("点击进入新增新闻页面"):
            new.add_news()
        with allure.step("输入新闻标题"):
            new.input_title(title)
        with allure.step("点击自定义作者"):
            new.click_CustomAuthor()
        with allure.step("输入自定义作者名"):
            new.input_author(author)
            time.sleep(2)
        with allure.step("选择TMT(一级)频道"):
            new.input_channel()
        with allure.step("选择原创类型"):
            new.input_type()
            new.select_tpye()
            time.sleep(7)
        with allure.step("选择同步首页"):
            new.select_homePage()
        with allure.step("填写摘要"):
            new.input_abstract(abstract)
        time.sleep(5)
コード例 #9
0
class Test_login():
    log = Log()

    @allure.feature("功能点:用户登录页面")
    @allure.story("用例:用户登录")
    @pytest.mark.parametrize("username,password,msg",
                             testdata["test_login_success_data"],
                             ids=["正确用户名密码登录"])
    # @pytest.mark.skip('跳过该成功用例')
    def test_success_login(self, username, password, msg):
        driver = webdriver.Chrome()
        web = LoginPage(driver)
        web.login(user=username, password=password)
        result = web.is_login_success(expect_text=msg)
        self.log.info("登录结果:%s" % result)
        # time.sleep(10)
        assert result
        # web.is_quit()

    @allure.feature("功能点:用户登录页面")
    @allure.story("用例:用户登录")
    @pytest.mark.parametrize("username,password,msg",
                             testdata["test_login_fail_data"],
                             ids=["正确用户名错误密码登录", "错误用户名正确密码登录"])
    # @pytest.mark.skip('跳过')
    def test_fail_login(self, username, password, msg):
        driver = webdriver.Chrome()
        web = LoginPage(driver)
        web.login(user=username, password=password)
        result = web.is_login_fail(expect_text=msg)
        self.log.info("登录结果:%s" % result)
        assert result
コード例 #10
0
ファイル: DemoEmail.py プロジェクト: juzihonglma/jiekou
    def send_email(self):
        new_report = self.get_report()
        today = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))

        #发送附件
        msg = MIMEMultipart()
        msg['From'] = self.sender
        msg['To'] = self.recevier
        msg['Subject'] = '软件测试情况'

        # 发送邮件正文内容,三个参数:第一个为文本内容,第二个 html 设置文本格式,第三个 utf-8 设置编码
        msg.attach(MIMEText('测试结果', 'plain', 'utf -8'))

        #将xlsx文件作为内容发送到对方的邮箱读取excel,rb形式读取,对于MIMEText()来说默认的编码形式是base64 ,没有设备会出现乱码
        fj = MIMEText(open(new_report, 'rb').read(), 'base64', 'utf -8')
        fj["Content-Type"] = 'application/octet-stream'
        fj["Content-Disposition"] = 'attachment; filename="TestResult.xlsx"'
        msg.attach(fj)

        try:
            #发送者smtp服务器
            smtp = smtplib.SMTP_SSL()
            smtp.connect(self.smtp, '465')
            #发送者邮箱账号和授权码
            smtp.login(self.user, self.password)
            #发件人邮箱账号、收件人邮箱账号、发送邮件
            smtp.sendmail(self.sender, self.recevier, msg.as_string())
            Log().info('发送成功')
            smtp.close()
        except Exception as e:
            Log.debug('发送邮件失败')
            raise
コード例 #11
0
ファイル: test_login.py プロジェクト: cl-GitHub/web
 def setUpClass(cls):
     cls.driver = set_options()
     cls.driver.set_window_size(1920, 1080)
     cls.login_driver = LoginPage(cls.driver)
     cls.login_driver.open(login_url)
     cls.log = Log()
     cls.find_driver = FindPage(cls.driver)
コード例 #12
0
ファイル: test_login.py プロジェクト: Jacklovely/new_pytestUI
class Test_login():

    log = Log()

    @allure.story("用例:用户登录")
    @pytest.mark.parametrize("username,password,msg",testdata["login_success_data"],
                             ids = ["正确用户名密码登录"])
    #@pytest.mark.skip('跳过该成功用例')
    @pytest.mark.run(order=-1)#调整登录成功用例最后运行
    def test_success_login(self,open_browser,username,password,msg):
        driver = open_browser
        #driver = Base().driver
        web = LoginPage(driver)
        web.login(user=username,password=password)
        with allure.step("获取结果: 获取页面实际结果,判断是否登录成功"):
            result = web.is_login_success(expect_text=msg)
            self.log.info("登录结果:%s"%result)
        with allure.step("断言:判断是否登录成功"):
            assert result
        #driver.quit()

    @allure.story("用例:用户登录")
    @pytest.mark.parametrize("username,password,msg", testdata["login_fail_data"],
                             ids=["错误用户名正确密码登录"])
    # @pytest.mark.skip('跳过')
    def test_fail_login(self,open_browser,username,password,msg):
        #driver调用前置无头模式启动
        driver = open_browser
        web = LoginPage(driver)
        web.login(user=username,password=password)
        with allure.step("获取结果: 获取页面实际结果,判断是否登录成功"):
            result = web.is_login_fail(expect_text=msg)
            self.log.info("登录结果:%s"%result)
        with allure.step("断言:判断是否登录成功"):
            assert result
コード例 #13
0
 def __init__(self, excel_path, sheet_name="Sheet1"):
     self.data = xlrd.open_workbook(excel_path)  #根据路径打开一个文件
     self.table = self.data.sheet_by_name(sheet_name)  #根据表名打开表
     self.keys = self.table.row_values(0)  #获取第一行作为字典的key值
     self.rowNum = self.table.nrows  #获取总行数
     self.colNum = self.table.ncols  #获取总列数
     self.log = Log('读取Excel').get_logger()
コード例 #14
0
class LoginTest(unittest.TestCase):
    log = Log()

    def setUp(self):
        self.log.info("登录测试开始")

    def test_login_suc(self):
        """登入测试用例!!!!"""
        lg_suc = Login('login_by_account')
        result = lg_suc.login_service()
        self.log.info("test_login_suc 登录的status code为:" +
                      str(lg_suc.status_code()))
        "断言二:登录的国家是否是jp" + str(
            self.assertEqual(result['info']['countryid'], 'JP'))

    def test_login_invaild_password(self):
        """密码错误登录"""
        lg_invaild_password = Login("login_invaild_password")
        result = lg_invaild_password.login_service(True)
        self.log.info("test_login_invaild_password 登录的status code 为:" +
                      str(lg_invaild_password.status_code()))
        "断言 是否是密码错误的提示:" + str(self.assertIn("password", result))

    def test_logout(self):
        """登出测试用例"""
        lgout = LogOut("logout")
        result = lgout.logout_service()
        self.log.info("test_logout 的status code 为: " +
                      str(lgout.status_code()))
        "断言: 是否登出:" + str(self.assertEqual(result['CODE'], "1"))

    def tearDown(self):
        self.log.info('登录测试结束')
コード例 #15
0
 def test_cases(self, case):
     global test_result
     url = case['Url']
     method = case['Method']
     param = case['Param']
     case_id = case['CaseId']
     module = case['Module']
     expected_result = case['ExpectedResult']
     Log.info('用例参数为{}'.format(case))
     actual_result = HttpRequest().http_request(url, method,
                                                param)  # 返回 resp
     Log.info('第{}条{}模块用例,返回结果{}'.format(case_id, module,
                                         actual_result.json()))
     try:
         self.assertEqual(expected_result, actual_result.json())
         test_result = 'Pass'
     except Exception as e:
         test_result = 'Fail'
         Log.error(e)
         raise e
     finally:
         Log().info(
             '-----------------------------------------开始写回测试结果-----------------------------------------'
         )
         DoExcel(project_path.test_cases_path).write_excel(
             'Sheet1', case_id + 1, 8, actual_result.text)
         DoExcel(project_path.test_cases_path).write_excel(
             'Sheet1', case_id + 1, 9, test_result)
コード例 #16
0
ファイル: danmaku.py プロジェクト: lchloride/bilibili_bangumi
 def __init__(self, mode=CMD_LINE):
     self.cid = ""
     self.mode = mode
     self.log = Log()
     self.driver = self.__create_driver()
     if self.driver is not None:
         self.driver.set_page_load_timeout(int(Config().get_property("time", "page_load_timeout")))
コード例 #17
0
ファイル: loginin.py プロジェクト: laihongyutest/UiTest
class Login_in():
    log = Log()

    def __init__(self):
        self.yaml_data = ReadFile().read_yaml("yaml_path")
        self.header = self.yaml_data["header"]
        self.url = self.yaml_data["url"]
        self.link_url = self.yaml_data["c_login"]["url"]
        self.login_method = self.yaml_data["c_login"]["method"]
        self.login_param = self.yaml_data["c_login"]["param"]

    def c_longin_in(self, mobile):
        """
        登录
        :param mobile:
        :return:
        """
        try:
            self.login_param["mobile"] = mobile
            result = Runmethod.run_main(self.login_method, url,
                                        self.login_param, self.header)
            return result
        except Exception as e:
            print("登录报错{}".format(e))
            self.log.error("登录报错{}".format(e))
コード例 #18
0
 def setUp(self):
     self.log = Log()
     self.log.info('loginnull测试开始')
     case_excle = ReadCase('mltest.xlsx', '工作表1')
     self.login_url_null = case_excle.get_interface_url('login_null')
     self.login_data_null = case_excle.get_interface_data('login_null')
     self.login_headers_null = case_excle.get_intetface_headers('login_null')
コード例 #19
0
 def __init__(self, mode=CMD_LINE, progress_bar_var=None, speed_str=None):
     self.last_per = -1
     self.last_block_sec = 0
     self.current_block = 0
     self.progress = progress_bar_var
     self.mode = mode
     self.log = Log()
     self.speed_str = speed_str
コード例 #20
0
 def setUpClass(cls):
     cls.driver = set_options()
     cls.driver.set_window_size(1920, 1080)
     cls.login_driver = LoginPage(cls.driver)
     cls.login_driver.open(login_url)
     cls.login_driver.user_login(cls.login_driver, '*****@*****.**', 'ab1234567')
     cls.find_pwd_driver = PostAnOfferPage(cls.driver)
     cls.log = Log()
コード例 #21
0
 def setUp(self):
     self.log = Log()
     self.log.info("测试开始")
     self.dr = Drive()
     self.url = "http://www.baidu.com"
     self.input_name = '百度搜索输入框'
     self.click_name = '百度一下按钮'
     self.serach_name = 'haha'
コード例 #22
0
 def __init__(self):
     self.yaml_path = os.path.join(
         os.path.dirname(os.path.dirname(__file__)), "config/config.yaml")
     self.mysql_yaml_path = os.path.join(
         os.path.dirname(os.path.dirname(__file__)), "config/mysql.yaml")
     self.excel_path = os.path.join(
         os.path.dirname(os.path.dirname(__file__)), "config/testcase.xls")
     self.log = Log()
コード例 #23
0
 def __init__(self, driver):
     """
         :param driver:打开浏览器驱动
         :param base_url:输入测试url
         :param pagetitle:输入页面title
     """
     self.driver = driver
     self.logger = Log()
コード例 #24
0
 def setUp(self):
     self.log = Log("BaiduTests")
     self.driver = webdriver.Firefox()
     print(11)
     self.log.info("打开浏览器")
     print(33)
     self.driver.implicitly_wait(30)  # 隐性等待时间为30秒
     self.base_url = "https://www.baidu.com"
コード例 #25
0
ファイル: test_01.py プロジェクト: sitven/viewHtmlReport
 def test_002(self):
     """百度搜索_Appium"""
     """百度搜索_Python"""
     try:
         self.driver.maximize_window()
         Log().info(" 浏览器窗口最大化")
         self.driver.implicitly_wait(time_to_wait=5)
         Log().info(" 设置隐性等待时间为5秒")
         self.driver.get(url="https://www.baidu.com")
         Log().info(" 访问百度")
         self.driver.find_element_by_xpath("//input[@id='kw']").send_keys(
             "Appium")
         Log().info(" 搜索输入框输入Python")
         time.sleep(1)
         self.driver.find_element_by_xpath("//input[@id='su']").click()
         Log().info(" 点击百度一下搜索框")
         time.sleep(1)
         title = self.driver.title
         Log().info(" 获得当前页面标题:%s" % title)
         time.sleep(2)
         assert "Appium_百度搜索", title
     except Exception as e:
         timeStrmap = time.strftime('%Y%m%d_%H_%M_%S')
         img_name = os.path.join(img_path, "%s.png" % str(timeStrmap))
         Log().info(message=" 异常截图保存路径: %s  异常截图名称:%s" %
                    (img_path, os.path.split(img_name)[1]))
         self.driver.get_screenshot_as_file(img_name)
         raise
コード例 #26
0
 def write_excel(self, sheet_name, row, col, value):
     try:
         wb = load_workbook(self.file_name)
         sheet = wb[sheet_name]
         sheet.cell(row, col).value = '{}'.format(value)
         wb.save(self.file_name)
         wb.close()
     except Exception as e:
         Log().error('---写回测试结果失败{}'.format(e))
コード例 #27
0
ファイル: test_my_offers.py プロジェクト: cl-GitHub/web
 def setUpClass(cls):
     cls.driver = set_options()
     cls.driver.set_window_size(1920, 1080)
     cls.login_driver = LoginPage(cls.driver)
     cls.login_driver.open(login_url)
     cls.login_driver.user_login(cls.login_driver, "*****@*****.**",
                                 "ab1234567")
     cls.my_offers_driver = MyOffersPage(cls.driver)
     cls.log = Log()
コード例 #28
0
ファイル: DEMOmysql.py プロジェクト: juzihonglma/jiekou
    def __init__(self,
                 host=None,
                 port=0,
                 user=None,
                 passwd=None,
                 db=None,
                 charset=None,
                 max_retries_count=None,
                 conn_retries_count=None,
                 conn_timeout=None):
        con_status = True
        #定位路径
        file = os.path.abspath(
            os.path.join(os.getcwd(), '..', 'database', 'config'))
        config = ConfigParser()
        config.read(file)
        host = config.get("mysql", 'host')
        port = config.getint("mysql", 'port')
        user = config.get("mysql", 'user')
        passwd = config.get("mysql", 'passwd')
        db = config.get("mysql", 'db')
        charset = config.get("mysql", 'charset')
        max_retries_count = config.getint("mysql", 'max_retries_count')
        conn_retries_count = config.getint("mysql", 'conn_retries_count')
        connect_timeout = config.getint("mysql", 'connect_timeout')

        while con_status and max_retries_count > conn_retries_count:
            try:
                #建立连接
                self.conn = pymysql.Connect(host=host,
                                            port=port,
                                            user=user,
                                            passwd=passwd,
                                            db=db,
                                            charset=charset)
                Log().info('连接成功')
                # 创建游标
                self.cursor = self.conn.cursor()
                con_status = False
            except:
                conn_retries_count += 1
                print(conn_retries_count)
                Log().debug('连接失败')
            continue
コード例 #29
0
 def setUp(self):
     self.logger = Log()
     self.logger.info(
         '#####################  START  ######################')
     warnings.simplefilter('ignore', ResourceWarning)
     driver = init_driver()
     self.driver = driver
     self.loginPage = LoginPage(self.driver)
     self.registerPage = RegisterPage(self.driver)
     self.settingPage = SettingPage(self.driver)
コード例 #30
0
 def __init__(self):
     self.host = localReadConfig.get_http("baseurl")
     self.port = localReadConfig.get_http("port")
     self.timeout = localReadConfig.get_http("timeout")
     self.logger = Log().get_logger()
     self.headers = {}
     self.params = {}
     self.data = {}
     self.url = ""
     self.files = {}