Beispiel #1
0
 def run_main(self, method, url=None, data=None, header=None):
     """
     定义一个run_main函数,通过传过来的method来进行不同的get或post请求
     :param method:
     :param url:
     :param data:
     :param header:
     :return:
     """
     result = None
     if method == 'post':
         result = self.send_post(url, data, header)
         logger.info(result)
     elif method == 'get':
         result = self.send_get(url, data, header)
         logger.info(result)
     elif method == 'put':
         result = self.send_put(url, data, header)
         logger.info(result)
     elif method == 'delete':
         result = self.send_delete(url, data, header)
         logger.info(result)
     else:
         print("method值错误!!!")
         logger.info("method值错误!!!")
     return result
Beispiel #2
0
 def test_operational_point_details(self):  #质检-操作-采集点详情
     driver = self.driver
     testcase_title = '-*-*-*-*-*执行质检-操作-采集点详情用例*-*-*-*-*-'
     logger.info(testcase_title)
     InspectionPage().quality_inspection_menu(driver)
     driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[14]/div/button").click()  #点击操作按钮
     time.sleep(1)
     task_id = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[1]").text
     task_status = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[6]/span").text
     task_name = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[4]/a").text  #获取当前页面第一个任务名
     point_details_num = re.findall(
         r"\d+\.?\d*",
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[14]/div/ul/li/a/small").text)[
                 0]  #获取采集点详情按钮中的数字
     #获取当前标签句柄
     first_handle = driver.current_window_handle
     driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[14]/div/ul/li/a").click()  #点击采集点详情
     all_handles = driver.window_handles  # 获取所有窗口句柄
     for handle in all_handles:  #判断当前窗口句柄,切换窗口
         if handle != first_handle:
             driver.switch_to_window(handle)
     page_sum = re.findall(
         r"\d+\.?\d*",
         driver.find_element_by_xpath(
             "//div[@class='am-u-sm-12']/div/div/div[2]/div").text
     )  #获取采集点详情页点总数
     self.assertIn(point_details_num, page_sum)
     logger.info(
         [task_id, task_status, task_name, point_details_num, page_sum])
Beispiel #3
0
 def test_signal_link(self):  #质检-检测状态-信号
     driver = self.driver
     testcase_title = '-*-*-*-*-*执行质检-检测状态-信号用例*-*-*-*-*-'
     logger.info(testcase_title)
     InspectionPage().quality_inspection_menu(driver)
     task_id = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[1]").text
     task_status = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[6]/span").text
     task_name = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[4]/a").text  #获取当前页面第一个任务名
     string = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[13]/a[3]").text
     signal_num = re.findall(r"\d+\.?\d*", string)[0]  #获取信号数量
     #获取当前标签句柄
     first_handle = driver.current_window_handle
     driver.find_element_by_xpath("//table[@id='dg']/tbody/tr/td[13]/a[3]"
                                  ).click()  #点击 信号连接,进入采集点信号详情页
     all_handles = driver.window_handles  # 获取所有窗口句柄
     for handle in all_handles:  #判断当前窗口句柄,切换窗口
         if handle != first_handle:
             driver.switch_to_window(handle)
     page_signal_sum = re.findall(
         r"\d+\.?\d*",
         driver.find_element_by_xpath(
             "//div[@class='am-u-sm-12']/div/div/div[2]/div").text
     )  #获取采集点信号详情页信号总数
     self.assertIn(signal_num, page_signal_sum)
     logger.info([
         task_id, task_status, task_name, string, signal_num,
         page_signal_sum
     ])
Beispiel #4
0
    def mailMain(self):
        try:
            # 创建一个实例
            with open(mailFilePath, 'rb') as f:
                mailBody = f.read()
            message = MIMEMultipart()
            message.attach(MIMEText(mailBody, 'html', 'utf-8'))  # 邮件正文
            message['From'] = mailFromPerson  # 邮件上显示的发件人
            message['To'] = mailToPerson  # 邮件上显示的收件人
            message['Subject'] = Header(mailTitle, 'utf-8')  # 邮件主题
            att1 = MIMEText(open(mailFilePath, 'rb').read(), 'base64', 'utf-8')
            att1["Content-Type"] = 'application/octet-stream'
            # 这里的filename可以任意写,写什么名字,邮件中显示什么名字
            att1["Content-Disposition"] = 'attachment; filename="report.html"'
            message.attach(att1)

            smtp = smtplib.SMTP()  # 创建一个连接
            smtp.connect(mailSmtpServer)  # 连接发送邮件的服务器
            smtp.login(mailSmtpUser, mailSmtpPwd)  # 登录服务器
            smtp.sendmail(mailFromPerson, message['To'].split(','),
                          message.as_string())  # 填入邮件的相关信息并发送
            logger.info("邮件发送成功!!!")
            smtp.quit()
        except smtplib.SMTPException:
            logger.info("邮件发送失败")
Beispiel #5
0
def write_file(open_method, file_dir, file_name, write_info):
    #   写入方法(w创建写入a追加写入),文件名,写入信息(分隔符换行等信息由调入者格式化传入)
    file_name = file_name.replace(':', '-')
    file = ''.join([file_dir, os.sep, file_name])
    file = file.replace('\\', '/')
    try:
        if (open_method == 'a' and os.path.exists(file)) or open_method == 'w':
            with codecs.open(file, open_method, 'gb18030') as f:
                #   判断写入信息是否为空,非空则写入
                if write_info.strip():
                    f.write(write_info)
        elif open_method not in ['w', 'a']:
            print(u'========== open_method error : %s %s==========' %
                  (open_method, datetime.datetime.now()))
            return {'result': '1', 'info': 'open_method error'}
        elif os.path.exists(file) == False:
            logger.info(u'file not exist : %s ' % (file))
            return {'result': '1', 'info': 'file not exist'}
    except Exception as e:
        logger.info(u'file write error : %s ' % (e))
        return {'result': '1', 'info': 'file write error : %s' % e}
    return {
        'result': '0',
        'info': 'file write success',
        'file_name': file_name
    }
Beispiel #6
0
 def makeCaseList(self,fileName,defNameHead):
     try:
         #   创建caseList文件
         write_file('w',caseListFilePath,caseListName,'')
         with open(fileName,'r') as file:
             while 1:
                 #   去除每行头部的空格或制表符
                 f = file.readline().strip().strip('/t')
                 #   检查是否以class为开头
                 if f == None or f == u'\n' or f == u'' and f == u'\r\n':
                     break
                 if f.startwith('class'):
                     classNameBeg = 5
                     classNameEnd = f.find('(',1)
                     className = f[classNameBeg,classNameEnd]
                     self.testCaseCount[className] = 0
                 elif 'className'in vars() and f.startwith('def'):
                     defNameBeg = 3
                     defNameEnd = f.find('(',1)
                     defName = f[defNameBeg,defNameEnd]
                     #   过滤函数名
                     if defName.startwith(defNameHead):
                         self.testCaseCount[className] += 1
                         writeData = className + '/' + defName
                         write_file('a',caseListFilePath,caseListName,writeData)
         self.pyCaseFileCount += 1
         logger.info('获取 test case 列表结束')
     except Exception as e:
         logger.error('获取 test case 列表时异常 %s'%(e))
         return {'result':1,'msg':'获取 test case 列表时异常 %s'%(e)}
     return {'result':0,'msg':'获取 test case 列表结束','testCaseCount':self.testCaseCount}
Beispiel #7
0
    def send(self):
        self.msg['Subject'] = self.title
        self.msg['From'] = self.sender
        self.msg['To'] = self.receiver

        # 邮件正文
        if self.message:
            self.msg.attach(MIMEText(self.message))

        # 添加附件,支持多个附件(传入list),或者单个附件(传入str)
        if self.files:
            if isinstance(self.files, list):
                for f in self.files:
                    self._attach_file(f)
            elif isinstance(self.files, str):
                self._attach_file(self.files)

        # 连接服务器并发送
        try:
            smtp_server = smtplib.SMTP(self.server)  # 连接sever
        except (gaierror and error) as e:
            logger.exception('发送邮件失败,无法连接到SMTP服务器,检查网络以及SMTP服务器. %s', e)
        else:
            try:
                smtp_server.login(self.sender, self.password)  # 登录
            except smtplib.SMTPAuthenticationError as e:
                logger.exception('用户名密码验证失败!%s', e)
            else:
                smtp_server.sendmail(self.sender, self.receiver.split(';'), self.msg.as_string())  # 发送邮件
            finally:
                smtp_server.quit()  # 断开连接
                logger.info('发送邮件"{0}"成功! 收件人:{1}。如果没有收到邮件,请检查垃圾箱,'
                            '同时检查收件人地址是否正确'.format(self.title, self.receiver))
Beispiel #8
0
    def send(self):
        self.msg['Subject'] = self.title
        self.msg['From'] = self.sender
        self.msg['To'] = self.receiver

        # 邮件正文
        if self.message:
            self.msg.attach(MIMEText(self.message))

        # 添加附件,支持多个附件(传入list),或者单个附件(传入str)
        if self.files:
            if isinstance(self.files, list):
                for f in self.files:
                    self._attach_file(f)
            elif isinstance(self.files, str):
                self._attach_file(self.files)

        # 连接服务器并发送
        try:
            smtp_server = smtplib.SMTP(self.server)  # 连接sever
        except (gaierror and error) as e:
            logger.exception('发送邮件失败,无法连接到SMTP服务器,检查网络以及SMTP服务器. %s', e)
        else:
            try:
                smtp_server.login(self.sender, self.password)  # 登录
            except smtplib.SMTPAuthenticationError as e:
                logger.exception('用户名密码验证失败!%s', e)
            else:
                smtp_server.sendmail(self.sender, self.receiver.split(';'),
                                     self.msg.as_string())  # 发送邮件
            finally:
                smtp_server.quit()  # 断开连接
                logger.info('发送邮件"{0}"成功! 收件人:{1}。如果没有收到邮件,请检查垃圾箱,'
                            '同时检查收件人地址是否正确'.format(self.title, self.receiver))
Beispiel #9
0
 def run_main(self, method, url=None, data=None, body=None, headers=None):
     result = None
     if (method == 'post' or method == 'POST'):
         print("headers " + str(headers))
         print("params " + str(data))
         print("body: " + str(body))
         result = self.send_post(url, data, body, headers)
         logger.info(str(result))
     elif (method == 'get' or method == 'GET'):
         print("headers " + str(headers))
         print("params " + str(data))
         result = self.send_get(url, data, headers)
         logger.info(str(result))
     elif (method == 'delete' or method == 'DELETE'):
         print("headers " + str(headers))
         print("params " + str(data))
         result = self.send_delete(url, data, headers)
         logger.info(str(result))
     elif (method == 'put' or method == 'PUT'):
         print("headers " + str(headers))
         print("params " + str(data))
         print("body: " + str(body))
         result = self.send_put(url, data, body, headers)
         logger.info(str(result))
     else:
         print("method值错误!!!")
         logger.info("method值错误!!!")
     return result
Beispiel #10
0
 def _attach_file(self, att_file):
     """将单个文件添加到附件列表中"""
     att = MIMEText(open('%s' % att_file, 'rb').read(), 'plain', 'utf-8')
     att["Content-Type"] = 'application/octet-stream'
     file_name = re.split(r'[\\|/]', att_file)
     att["Content-Disposition"] = 'attachment; filename="%s"' % file_name[-1]
     self.msg.attach(att)
     logger.info('attach file {}'.format(att_file))
Beispiel #11
0
 def _attach_file(self, att_file):
     """将单个文件添加到附件列表中"""
     att = MIMEText(open('%s' % att_file, 'rb').read(), 'plain', 'utf-8')
     att["Content-Type"] = 'application/octet-stream'
     file_name = re.split(r'[\\|/]', att_file)
     att["Content-Disposition"] = 'attachment; filename="%s"' % file_name[-1]
     self.msg.attach(att)
     logger.info('attach file {}'.format(att_file))
Beispiel #12
0
 def test_task_username_search(self):  #质检-模糊匹配-按采集员-搜索
     driver = self.driver
     testcase_title = '-*-*-*-*-*执行质检-按采集员-搜索用例*-*-*-*-*-'
     logger.info(testcase_title)
     InspectionPage().quality_inspection_menu(driver)
     driver.find_element_by_xpath(
         "(//button[@type='button'])[12]").click()  #点击选择搜索类型
     time.sleep(1)
     driver.find_element_by_xpath(
         "//div[@class='admin-content-body']/div[7]/div[5]/div/div/ul/li[4]/span"
     ).click()  #选择搜索类型为采集员
     logger.info('选择搜索条件:' + driver.find_element_by_xpath(
         "//div[@class='admin-content-body']/div[7]/div[5]/div/div/ul/li[4]/span"
     ).text)
     InspectionPage().search_enter(driver, '李')
     logger.info('输入内容:李')
     driver.find_element_by_id("search_button").click()
     time.sleep(1)
     task_id = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[1]").text  #获取要操作的子任务id
     task_status = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[6]/span").text
     task_name = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[4]/a").text
     user_name = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[8]/a[1]").text
     self.assertIn(u"李", user_name)
     logger.info([task_id, task_name, task_status, user_name])
Beispiel #13
0
    def run_main(self, method, url=None, data=None, headers=None):
        result = None

        if method == 'post':
            result = self.send_post(url=url, headers=headers, data=data)

        elif method == 'get':
            result = self.send_get(url=url, headers=headers, data=data)

        else:

            logger.info("method值错误!!!")

        return result
Beispiel #14
0
 def test_task_username_accurate_search(self):  #质检-精确匹配-按采集员-搜索
     driver = self.driver
     testcase_title = '-*-*-*-*-*执行质检-精确匹配-按采集员-搜索用例*-*-*-*-*-'
     logger.info(testcase_title)
     InspectionPage().quality_inspection_menu(driver)
     InspectionPage().inspection_page_accurate_search(driver)
     driver.find_element_by_xpath(
         "//div[@class='admin-content-body']/div[7]/div[5]/div/div/ul/li[4]/span"
     ).click()  #选择搜索类型为采集员
     logger.info('选择匹配方式:精确匹配,选择搜索条件:' + driver.find_element_by_xpath(
         "//div[@class='admin-content-body']/div[7]/div[5]/div/div/ul/li[4]/span"
     ).text)
     InspectionPage().search_enter(driver, '马良')
     logger.info('输入内容:马良')
     driver.find_element_by_id("search_button").click()
     time.sleep(1)
     task_id = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[1]").text
     task_status = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[6]/span").text
     task_name = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[4]/a").text  #获取当前页面第一个任务名
     user_name = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[8]/a[1]").text
     self.assertEqual(u"马良", user_name)
     logger.info([task_id, task_status, task_name, user_name])
Beispiel #15
0
 def test_quality_inspection_area_search(self):  #质检-按区域搜索
     driver = self.driver
     testcase_title = '-*-*-*-*-*执行质检-按区域搜索用例*-*-*-*-*-'
     logger.info(testcase_title)
     InspectionPage().quality_inspection_menu(driver)
     driver.find_element_by_xpath(
         "(//button[@type='button'])[2]").click()  #点击所在城市选择框
     time.sleep(1)
     driver.find_element_by_xpath(
         "//div[@class='am-u-sm-12 am-u-md-3']/div/div/ul/li/span").click(
         )  #点选深圳市
     logger.info('选择搜索条件:' + driver.find_element_by_xpath(
         "//div[@class='am-u-sm-12 am-u-md-3']/div/div/ul/li/span").text)
     driver.find_element_by_xpath(
         "(//button[@type='button'])[3]").click()  #点击所在区域选择框
     time.sleep(1)
     driver.find_element_by_xpath(
         "//div[@class='am-selected am-dropdown  am-active']/div/ul/li[4]/span"
     ).click()  #点选南山区
     logger.info('选择搜索条件:' + driver.find_element_by_xpath(
         "//div[@class='am-selected am-dropdown  am-active']/div/ul/li[4]/span"
     ).text)
     time.sleep(1)
     area_name = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[2]").text
     self.assertIn(u"南山区", area_name)
     self.assertEqual(
         u"待质检",
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[6]/span").text)
     logger.info([
         area_name,
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[6]/span").text
     ])
Beispiel #16
0
 def test_allocate_task(self):  #任务分配
     driver = self.driver
     testcase_title = '-*-*-*-*-*执行任务分配用例*-*-*-*-*-'
     logger.info(testcase_title)
     driver.find_element_by_xpath(
         "//ul[@id='collapse-nav9']/li[3]/a/span[2]").click()  #点击任务管控链接
     driver.find_element_by_xpath(
         "(//button[@type='button'])[4]").click()  #点击任务状态选择框
     time.sleep(1)
     driver.find_element_by_xpath(
         "//div[@class='am-g']/div[3]/div/div/ul/li[1]/span").click(
         )  #选择未领取状态
     time.sleep(2)
     task_id = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[1]").text
     task_status = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[6]/span").text
     task_name = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[4]/a").text
     task_list = [task_id, task_name, task_status]
     logger.info(task_list)
     time.sleep(1)
     driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[8]/div/button").click()  #点击操作按钮
     time.sleep(1)
     driver.find_element_by_link_text(u"分配").click()  #点击分配按钮
     driver.find_element_by_id("search-text").click()
     driver.find_element_by_id("search-text").clear()
     driver.find_element_by_id("search-text").send_keys("马良")  #输入搜索条件
     driver.find_element_by_id("search-text").send_keys(Keys.ENTER)
     logger.info('输入内容:马良')
     driver.find_element_by_link_text(u"分配到用户").click()  #点击分配到用户按钮
     driver.find_element_by_xpath(
         "//div[@id='my-confirm']/div/div[3]/span[2]").click()  #点击确定按钮
     time.sleep(2)
     self.assertEqual(u"任务分配成功", self.close_alert_and_get_its_text())
     BusinessExecutionPage().business_execution_menu(driver)
     BusinessExecutionPage().business_execution_search_enter(
         driver, task_id)  #调用业务执行-搜索输入框函数输入id
     driver.find_element_by_id("search_button").click()  #点击搜索
     time.sleep(1)
     self.assertEqual(
         u"马良",
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[8]/a").text)
     self.assertEqual(
         u"待提交",
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[6]/span").text)
     logger.info([
         task_id, task_name,
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[8]/a").text,
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[6]/span").text
     ])
def get_jwt(username, password):
    if username in jwt_cache.keys():
        return jwt_cache[username]
    # 在喂小保后台调接口时,请求头需要用到jwt参数,此参数从登录接口中获取
    url = 'https://test.wxb.com.cn/dalaran/login'
    requests.packages.urllib3.disable_warnings()
    try:
        rs = requests.post(url=url, data={"userName": username, "pwd": password},
                           headers={"Content-Type": "application/x-www-form-urlencoded", "jwt": ""}, verify=False)
        if json.loads(rs.text)['code'] == 10000 and json.loads(rs.text)['msg'] == 'Success':
            jwt = json.loads(rs.text)['data']['jwt']
            jwt_cache[username] = jwt
            logger.info(f"获取jwt:{jwt} 成功")
            return jwt
        else:
            logger.info(f"{rs.text} 获取jwt失败")
    except Exception as e:
        logger.error(f"调用获取jwt接口失败{e}")
Beispiel #18
0
 def outlook(self):
     olook = win32.Dispatch("%s.Application" % app)
     mail = olook.CreateItem(win32.constants.olMailItem)
     mail.To = addressee  # 收件人
     mail.CC = cc  # 抄送
     mail.Subject = str(datetime.datetime.now())[0:19] + '%s' % subject  # 邮件主题
     mail.Attachments.Add(mail_path, 1, 1, "myFile")
     content = """
                 执行测试中……
                 测试已完成!!
                 生成报告中……
                 报告已生成……
                 报告已邮件发送!!
                 """
     mail.Body = content
     mail.Send()
     print('send email ok!!!!')
     logger.info('send email ok!!!!')
Beispiel #19
0
 def start(self,filePath,defNameHead,skipDirs=None):
     try:
         for root,dirs,files in os.walk(filePath):
             if skipDirs:
                 for i in range(len(skipDirs)):
                     skipDirs[i] =  filePath + u'/' + skipDirs[i].replace('\\','/').replace('//','/')
                 root = root.replace('\\','/')
                 if root in skipDirs:
                     logger.info('跳过目录 %s'%(root))
                     continue
             if not files:
                 logger.warning('文件列表为空')
                 return {'result':1,'msg':'文件列表为空'}
             for i in files:
                 result = self.makeCaseList(i,defNameHead)
     except Exception as e:
         logger.error('处理文件时异常 %s'%(e))
         return {'result':1,'msg':'处理文件时异常 %s'%(e)}
     return {'result':0,'msg':'处理文件成功','testCaseCount':self.testCaseCount,'pyCaseFileCount':self.pyCaseFileCount}
 def getValue(self, response, param):
     try:
         if response.status_code != 200:
             print('请求失败:', response.status_code)
         else:
             if param.lower() == 'token':
                 return response.json()['loginInfo']['tokenVo']['token']
             elif param.lower() == 'status':
                 return response.json()['result']['status']
             elif param.lower() == 'userid':
                 return response.json()['loginInfo']['userId']
             elif param.lower() == 'message':
                 return response.json()['result']['message']
             elif param.lower() == 'targetid':
                 return response.json()['loginInfo']['targetId']
             elif param.lower() == 'userid':
                 return response.json()['loginInfo']['userId']
     except Exception as e:
         print(format(e))
         logger.info(e)
Beispiel #21
0
 def test_task_status_settle_and_no_pay_search(
         self):  #质检-按任务状态-完成 (无须付款)-搜索
     driver = self.driver
     testcase_title = '-*-*-*-*-*执行质检-按任务状态-完成 (结算付款)-搜索用例*-*-*-*-*-'
     logger.info(testcase_title)
     InspectionPage().quality_inspection_menu(driver)
     driver.find_element_by_xpath(
         "(//button[@type='button'])[6]").click()  #点击任务状态下拉框
     driver.find_element_by_xpath(
         "//div[@class='am-selected am-dropdown  am-active']/div/ul/li[3]/span"
     ).click()  #取消选择'待质检'
     time.sleep(1)
     driver.find_element_by_xpath(
         "//div[@class='am-selected am-dropdown  am-active']/div/ul/li[9]/span"
     ).click()  #点击选择'完成 (无须付款)'
     logger.info('选择搜索条件:' + driver.find_element_by_xpath(
         "//div[@class='am-selected am-dropdown  am-active']/div/ul/li[9]/span"
     ).text)
     time.sleep(3)
     task_id = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[1]").text  #获取要操作的子任务id
     task_status = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[6]/span").text
     task_name = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[4]/a").text
     task_list = [task_id, task_name, task_status]
     self.assertEqual(u"完成 (无须付款)", task_status)
     logger.info(task_list)
Beispiel #22
0
 def test_quality_inspection_scene_type_search(self):  #质检-按场景类型搜索
     driver = self.driver
     testcase_title = '-*-*-*-*-*执行质检-按场景类型搜索用例*-*-*-*-*-'
     logger.info(testcase_title)
     InspectionPage().quality_inspection_menu(driver)
     driver.find_element_by_xpath(
         "(//button[@type='button'])[4]").click()  #点击场景类型选择框
     time.sleep(1)
     driver.find_element_by_xpath(
         "//div[@class='am-g']/div[3]/div/div/ul/li").click()  #点选商场场景
     logger.info('选择搜索条件:' + driver.find_element_by_xpath(
         "//div[@class='am-g']/div[3]/div/div/ul/li").text)
     time.sleep(1)
     self.assertEqual(
         u"商场",
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[3]").text)
     self.assertEqual(
         u"待质检",
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[6]/span").text)
     logger.info([
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[3]").text,
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[6]/span").text
     ])
 def test_settle_and_no_pay(self):  #批量结算不付款
     driver = self.driver
     testcase_title = '-*-*-*-*-*执行批量结算不付款用例*-*-*-*-*-'
     logger.info(testcase_title)
     InspectionPage().quality_inspection_menu(driver)
     InspectionPage().switch_status_to_wait_to_settlement(driver)
     task_id = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[1]").text  #获取要操作的子任务id
     task_status = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[6]/span").text
     task_name = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[4]/a").text
     task_list = [task_id, task_name, task_status]
     logger.info(task_list)
     driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr[1]/td[15]/input").click()  #选择勾选框
     driver.find_element_by_link_text(u"批量结算(不付款)").click()  #点击批量结算不付款
     time.sleep(1)
     self.assertEqual(u"完成结算质检!", self.close_alert_and_get_its_text())
     BusinessExecutionPage().business_execution_menu(driver)
     BusinessExecutionPage().business_execution_search_enter(
         driver, task_id)  # 调用业务执行-搜索输入框函数输入id
     driver.find_element_by_id("search_button").click()  #点击搜索
     time.sleep(1)
     self.assertEqual(u"完成 (无须付款)",
                      driver.find_element_by_xpath(
                          "//table[@id='dg']/tbody/tr/td[6]/span").text
                      )  #比对任务状态是否为完成 (无须付款),以判断是否结算成功
     logger.info([
         task_id, task_name,
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[6]/span").text
     ])
 def test_reapprove_switch_scene(self):  #审批不通过-任务质检页-切换场景
     driver = self.driver
     testcase_title = '-*-*-*-*-*执行审批不通过-任务质检页-切换场景用例*-*-*-*-*-'
     logger.info(testcase_title)
     InspectionPage().quality_inspection_menu(driver)
     InspectionPage().switch_status_to_approve_not_pass(driver)
     task_id = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[1]").text  #获取要操作的子任务id
     task_name = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[4]/a").text
     task_scene = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[3]").text
     logger.info([task_id, task_name, task_scene])
     InspectionPage().inspection_check_action(
         driver)  #调用质检结果查看操作函数,点击操作按钮切换当前标签页
     driver.find_element_by_xpath(
         "//button[@onclick='recoverBtn()']").click()  #点击编辑按钮
     driver.find_element_by_xpath(
         "//button[@onclick='showMengban()']").click()  #点击任务质检页-切换场景
     time.sleep(1)
     driver.find_element_by_xpath(
         "//div[@class='change-mengban']/div/div/div[2]/ul/li[1]/button"
     ).click()  #点击场景
     scene_goal = driver.find_element_by_xpath(
         "//div[@class='change-mengban']/div/div/div[2]/ul/li[1]/button"
     ).text  #获取准备切换的场景
     driver.find_element_by_xpath(
         "//button[@class='am-btn am-btn-success change-btn-cancel']"
     ).click()  #点击确认切换
     time.sleep(1)
     after_change_scene = driver.find_element_by_css_selector(
         "#collectMsg > td:nth-child(3)").text  #获取切换后的场景
     self.assertEqual(after_change_scene,
                      scene_goal)  #比对准备切换的场景和切换后的场景,一样则判断用例执行正确
     logger.info([task_id, task_name, after_change_scene])
Beispiel #25
0
 def test_quality_inspection_task_source_search2(self):  #质检-按任务来源-官方-搜索
     driver = self.driver
     testcase_title = '-*-*-*-*-*执行质检-按任务来源-官方-搜索用例*-*-*-*-*-'
     logger.info(testcase_title)
     InspectionPage().quality_inspection_menu(driver)
     driver.find_element_by_xpath(
         "(//button[@type='button'])[5]").click()  #点击任务来源选择框
     time.sleep(1)
     driver.find_element_by_xpath(
         "//div[@class='am-g']/div[4]/div/div/ul/li[2]/span").click()  #选择官方
     logger.info('选择搜索条件:' + driver.find_element_by_xpath(
         "//div[@class='am-g']/div[4]/div/div/ul/li[2]/span").text)
     time.sleep(1)
     self.assertEqual(
         u"",
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[4]/span").text)
     self.assertEqual(
         u"待质检",
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[6]/span").text)
     logger.info([
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[4]/span").text,
         driver.find_element_by_xpath(
             "//table[@id='dg']/tbody/tr/td[6]/span").text
     ])
Beispiel #26
0
 def test_check_status_search2(self):  #质检-按检测状态-未检测-搜索
     driver = self.driver
     testcase_title = '-*-*-*-*-*执行质检-按检测状态-未检测-搜索用例*-*-*-*-*-'
     logger.info(testcase_title)
     InspectionPage().quality_inspection_menu(driver)
     driver.find_element_by_xpath(
         "(//button[@type='button'])[7]").click()  #点击检测状态下拉框
     time.sleep(1)
     driver.find_element_by_xpath(
         "//div[@class='am-g am-margin-top-sm']/div[2]/div/div/ul/li[3]/span"
     ).click()  #点击选择未检测
     logger.info('选择搜索条件:' + driver.find_element_by_xpath(
         "//div[@class='am-g am-margin-top-sm']/div[2]/div/div/ul/li[3]/span"
     ).text)
     time.sleep(1)
     task_id = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[1]").text  #获取要操作的子任务id
     task_status = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[6]/span").text
     task_name = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[4]/a").text
     point = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[13]/a[1]").text
     photo = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[13]/a[2]").text
     signal = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[13]/a[3]").text
     #check_mark = driver.find_element_by_xpath("//table[@id='dg']/tbody/tr/td[13]/a[4]").text
     list_check_status = [point, photo, signal]
     self.assertNotIn(u"", list_check_status)  #比对结果不存在list里
     logger.info([task_id, task_name, task_status, point, photo, signal])
Beispiel #27
0
 def test_belong_to_team_search(self):  #质检-按所属团队-搜索
     driver = self.driver
     testcase_title = '-*-*-*-*-*执行质检-按所属团队-搜索用例*-*-*-*-*-'
     logger.info(testcase_title)
     InspectionPage().quality_inspection_menu(driver)
     driver.find_element_by_xpath(
         "(//button[@type='button'])[8]").click()  #点击所属团队下拉框
     time.sleep(1)
     driver.find_element_by_xpath(
         "//div[@class='am-g am-margin-top-sm']/div[3]/div/div/ul/li[97]/span"
     ).click()  #点击选择奋斗
     logger.info('选择搜索条件:' + driver.find_element_by_xpath(
         "//div[@class='am-g am-margin-top-sm']/div[3]/div/div/ul/li[97]/span"
     ).text)
     time.sleep(1)
     task_id = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[1]").text  #获取要操作的子任务id
     task_status = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[6]/span").text
     task_name = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[4]/a").text
     task_team = driver.find_element_by_xpath(
         "//table[@id='dg']/tbody/tr/td[7]").text
     self.assertEqual(u"奋斗", task_team)
     logger.info([task_id, task_name, task_status, task_team])
Beispiel #28
0
    def test_checkResult(self):
        """
        check test report
        :return:
        """
        get_url = url + self.path
        req = RunMain().run_main(
            self.method, get_url,
            self.query)  # 根据Excel中的method调用run_main来进行requests请求,并拿到响应
        data = json.loads(req.text)
        res = json.dumps(data, ensure_ascii=False, indent=1)
        print("url:" + get_url + "\n" + "query:\n" + self.query)
        print("\n接口返回数据:\n\n" + res + "\n")

        self.assertEqual(req.status_code, self.status_code)
        self.assertEqual(data['code'], self.code)
        self.assertEqual(data['msg'], self.msg)
        self.assertLessEqual(eval(self.data1), eval(self.data2))  #去除字符的双引号,断言
        print("结果数据为:\n" + str(req.status_code) + "," + str(data['code']) +
              "," + str(data['msg']))
        print("基线数据为:\n" + str(self.status_code) + "," + str(self.code) + "," +
              str(self.msg) + "\n")

        logger.info(req)
        logger.info(str(self.case_name))
        logger.info(data)
        return res
Beispiel #29
0
    def test_checkResult(self):
        cu.execute(self.sql)
        da = cu.fetchall()
        # print(len(data[0][0]))
        if len(da[0][0]) != 0:
            task_id = da[0][0]
        else:
            print("没有查到数据")
        # cu.close()

        get_url = url + "/tasks/" + task_id + self.path
        req = RunMain().run_main(self.method, get_url, self.query)
        data = json.loads(req.text)
        res = json.dumps(data, ensure_ascii=False, indent=1)
        print("url:" + get_url + "\n" + "query:\n" + self.query)
        print("\n接口返回数据:\n\n" + res + "\n")

        self.assertEqual(req.status_code, self.status_code)
        self.assertEqual(data['code'], self.code)
        self.assertEqual(data['msg'], self.msg)
        self.assertEqual(data['data'], task_id)
        print("结果数据为:\n" + str(req.status_code) + "," + str(data['code']) +
              "," + str(data['msg']) + "," + str(data['data']))
        print("基线数据为:\n" + str(self.status_code) + "," + str(self.code) + "," +
              str(self.msg) + "," + str(task_id) + "\n")

        logger.info(req)
        logger.info(str(self.case_name))
        logger.info(data)
        return res
Beispiel #30
0
 def run_main(self,
              method,
              url=None,
              data=None,
              jsonData=None):  #定义一个run_main函数,通过传过来的method来进行不同的get或post请求
     result = None
     if method == 'post':
         result = self.send_post(url, data, jsonData=jsonData)
         logger.info(str(result))
     elif method == 'get':
         result = self.send_get(url, data)
         logger.info(str(result))
     elif method == 'put':
         result = self.send_put(url, data, jsonData=jsonData)
         logger.info(str(result))
     elif method == 'delete':
         result = self.send_delete(url)
         logger.info(str(result))
     else:
         print("method值错误!!!")
         logger.info("method值错误!!!")
     return result
Beispiel #31
0
    def check_keys_value(self):
        if self.validate['assert_kes_value'] is not None:
            # print(type(self.validate['assert_kes_value']))
            val_list = self.validate['assert_kes_value']
            # print('jjjj {}'.format(val_list))

            for i in val_list:
                # print('xxx种的类型为 {}'.format(type(i)))
                obj_key = list(i.keys())[0]
                logger.info('要断言的key为 {}'.format(obj_key))
                obj_value = list(i.values())[0]
                logger.info('要断言的key的value值为 {}'.format(obj_value))
                temp = self.response_data
                # print(type(temp))
                # logger.info('接口返回的结果【用来断言】为 {}'.format(temp))
                keys_value = get_target_value(obj_key, temp, [])
                # print(keys_value)
                assert obj_value in keys_value, (
                    'assert_kes_value 断言-----接口中字段 {} 的值 {} 和预期结果的值 {} 不一致'.
                    format(obj_key, keys_value, obj_value))
        else:
            pass
 def requests(self, httpMethod, url, data,
              headers):  # 定义一个方法,传入需要的参数url和data
     # 参数必须按照url、data顺序传入
     if httpMethod.lower() == ('post'):  #.upper()小写转大写
         try:
             if isinstance(data, str):  #判断数据类型,类型为str则不需要转格式
                 result = requests.post(url=url,
                                        data=data,
                                        headers=headers,
                                        verify=False)
             else:
                 result = requests.post(url=url,
                                        data=json.dumps(data),
                                        headers=headers,
                                        verify=False)
             return result
         except BaseException as e:
             print("post请求出现了异常:{0}".format(e))
     elif httpMethod.lower() == ('get'):
         try:
             if isinstance(data, str):
                 result = requests.get(url=url,
                                       params=data,
                                       headers=headers,
                                       verify=False)
             else:
                 #数据格式转换
                 result = requests.get(url=url,
                                       params=json.dumps(data),
                                       headers=headers,
                                       verify=False)
             return result
         except Exception as e:
             print("get请求出现了异常:{0}".format(e))
             logger.exception(format(e))
     else:
         print("method值错误:", httpMethod)
         logger.info("method值错误:", httpMethod)