class AppEngine(): def __init__(self): # 创建日志实例 self.mylog = Logger(logger='appEngine').getlog() # 读取配置文件中的启动appium需要的参数 conf = MyConfig() # 读取ini文件 filePath = os.path.dirname(os.path.dirname(__file__)) conf.read(filePath + '\\config\\config.ini', encoding='utf-8') self.mylog.info("读取文件../config/config.ini") # 获取选择的section的名字 sel = conf.get('select', 'app') self.mylog.info("选择的手机参数为{}下的值".format(sel)) # 获取上面获取的section下的所有options的值 self.options = conf.items(sel) self.url = 'http://localhost:{}/wd/hub'.format( conf.get('appium', 'port')) self.mylog.info("链接appium的地址为:{}".format(self.url)) # 开启app def open_app(self): # 转换成caps caps = {} for i in self.options: caps[i[0]] = i[1] try: self.driver = webdriver.Remote(self.url, caps) self.mylog.info("与appium链接成功") return self.driver except exceptions.MaxRetryError: self.mylog.error("请求多次appium失败,查看服务是否有问题") except Exception as e: self.mylog.error("报错信息:{}".format(e)) # 关闭app def quit_app(self): self.driver.quit()
import os logger = Logger('ClassBox').logger report_path = os.path.abspath('.') + '/test_reports/' # 获取系统当前时间 now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())) # 设置报告名称格式 HtmlFile = report_path + now + "HTMLtemplate.html" fp = open(HtmlFile, "wb") # 构建suite if __name__ == '__main__': suite = unittest.TestLoader().discover(os.path.abspath('.') + '/testsuits') # 初始化一个HTMLTestRunner实例对象,用来生成报告 logger.info('课程格子app测试开始') runner = HTMLTestRunner(stream=fp, title=u"课程格子项目测试报告", description=u"测试app的安装和卸载", verbosity=2) # print(suite) # 开始执行测试套件 runner.run(suite) logger.info('app测试结束') logger.info("测试报告已存入到'/test_reports'中") fp.close()
HtmlFile = report_path + ReportName fp = open(HtmlFile, "wb") # 定义测试用例的目录为当前目录 # test_dir = './' # discover = unittest.defaultTestLoader.discover(test_dir,pattern='test*.py') # 构建suite suite_path = os.path.dirname(os.path.abspath('.')) + '/testsuites/' suite = unittest.TestSuite() suite.addTest(OrderNew("test_order_new")) suite.addTest(ProjectManager("test_project_manager")) suite.addTest(ProjectExecute("test_project_execute")) suite.addTest(ExportNotice("test_export_notice")) suite.addTest(PurchaseRequest("test_purchase_request")) suite.addTest(PurchaseOrder("test_purchase_order")) if __name__ == '__main__': # 初始化一个HTMLTestRunner实例对象,用来生成报告 runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"订单交付系统测试报告", description=u"用例测试情况", verbosity=2) # 开始执行测试套件 runner.run(suite) fp.close() OrderBase.sql_update('html_report', ReportName) logger.info("Now, The HTML report is generated.Plz check in %s" % HtmlFile)
import unittest, time, re, sys sys.path.append(r"F:\\selenium-py\\") from framework.logger import Logger logger = Logger(logger="MYtest").getlog() # 加启动配置 option = webdriver.ChromeOptions() option.add_argument('disable-infobars') #return webdriver.Chrome(chrome_options = option,desired_capabilities = None) dr = webdriver.Chrome(chrome_options=option) logger.info("You had select %s browser." % dr) #dr =webdriver.Firefox() class MYtest(unittest.TestCase): def setUp(self, driver=dr): self.driver = driver self.driver.maximize_window() logger.info("browser maximize the current window.") self.driver.implicitly_wait(10) self.base_url = "http://oa.eascs.com/eaoa/" logger.info("Open browser url is: %s" % self.base_url) self.verificationErrors = [] def tearDown(self): try:
UnStandard.append(Accuracy) dic = { 'ID': x + 1, 'Name': cf.get("Data", str(i)), 'Code': i, 'Numbertest': len(Numbertests), 'PASS': len(passlist), "FAIL": len(faillist), 'ERROR': len(errorlist), 'Accuracy': Accuracylist } SumNumbers.append(len(Numbertests)) SumPass.append(len(passlist)) SumFail.append(len(faillist)) SummaryExcle(filepath, dic, title, 7) # excle文件路径、输入数据,写入工作表名称,结果颜色列 logger.info(dic) dic_hz = { 'Totaltype': '%s识别测试类别数:%s' % (cf.get("Config", 'TestName'), len(SumNumbers)), 'SumNumbers': '识别总数(次数、图片总数):%s' % sum(SumNumbers), 'SumPass': '******' % sum(SumPass), 'SumFail': '识别不准确数:%s' % sum(SumFail), 'Standard': '识别准确率达标数:%s' % len(Standard), 'UnStandard': '识别准确率未达标数:%s' % len(UnStandard), 'threshold': '准确率标准为不低于%s' % "%.2f%%" % (threshold * 100),
def test_print_and_send(self): # 参数 ---------------------------------- address = '张放1' tem = '顺丰热敏180mm' # ---------------------------------------------- logger = Logger(logger="BasePage").getlog() #初始化登录界面,并登录 loginpage = Loginpage(self.driver) loginpage.type_username('12830222909') loginpage.type_password('1qaz2wsx') self.driver.find_element_by_id('submit').click() time.sleep(3) # 定义一个指定的订单 # 切换到当前frame frame1 = self.driver.find_element_by_id('container-i') self.driver.switch_to_frame(frame1) time.sleep(3) # 页面实例化 orderpage = OrderPage(self.driver) # 根据指定的收件地址选择订单 self.driver.find_element_by_xpath('//td[text()="%s"]' % address).click() # 点击打印快递单 orderpage.click_print() time.sleep(1) # 选择模板 self.driver.find_element_by_xpath('//label[text()="%s"]' % tem).click() # 选择打印机 orderpage.choose_printer('Microsoft XPS Document Writer') # 点击打印 orderpage.click_print1() time.sleep(1) # 确定打印 orderpage.yes_print() time.sleep(4) # 验证打印结果-------------------------------------------------------------------------------------------------- row1 = orderpage.element_row('张放1') x = '//*[@id="tableDiv"]/table/tbody[2]/tr[%s]/td[1]/i' % row1 # 打印标志 try: if orderpage.is_element_exist(x): self.assertTrue(True) logger.info('打印成功') else: self.assertTrue(False) except BaseException as e: self.assertTrue(False) # -------------------------------------------------------------------------------------------------------------- orderpage.click_consignBtn() time.sleep(3) # 验证发货合计信息是否正确-------------------------------------------------------------------------------------- info1 = orderpage.get_consignment_info() print(info1) try: if info1 == '发货合计:共1单': self.assertTrue(True) logger.info('选择一条订单进行发货') else: orderpage.get_windows_img() self.assertTrue(False) except BaseException as e: self.assertTrue(False) time.sleep(2) # 点击确定 orderpage.click_qdConsign() time.sleep(4) # 验证发货结果 info2 = orderpage.get_consignResult_info() try: if info2 == '共1单,成功1单,失败0单': self.assertTrue(True) logger.info('一条订单发货成功') else: orderpage.get_windows_img() self.assertTrue(False) except BaseException as e: self.assertTrue(False) # 关闭发货弹框 orderpage.click_confirm_close() time.sleep(2) # 跳出frame self.driver.switch_to.default_content() # 退出登录 loginpage.skin01_logout() time.sleep(3)
import time from framework.logger import Logger class GetTime(object): def get_system_time(self): print(time.time()) print(time.localtime()) new_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) print(new_time) localtime = GetTime() localtime.get_system_time() mylogger = Logger(logger='get_time').get_log() mylogger.info('test') def convert(n): num = abs(n) newNum = 0 a = 1 while num > 0: temp = num % 7 num = num // 7 newNum += temp * a a *= 10 if n > 0: return newNum else: return -newNum
from framework.logger import Logger log = Logger(logger='log').getlog() print(log.info('cesi')) input_box = "id=>kw" search_submit_bth = "xpath=>//*[@id='su']" a = input_box.split('=>')[0] b = input_box.split('=>')[1] print(a) print(b)
class BasePage(object): def __init__(self, driver): self.driver = driver self.logger = Logger(self.__class__.__name__).getLogger() def get(self, url): try: self.driver.get(url) self.logger.info('open url:{0}'.format(url)) except Exception as e: self.logger.error('open url:{0} failed'.format(url)) def get_window_img(self): imgpath = config.get("img", "imgPath") imgName = imgpath + rq + '.png' try: self.driver.get_screenshot_as_file(imgName) self.logger.info('save screenshot succeed') except Exception as e: self.logger.error('save screenshot failed {0}'.format(e)) def find_element(self, locator): #切割传入的字符串分离出查找类型和表达式 el = '' if '=>' not in locator: raise ValueError('locator must split by =>') locator_by_str = locator.split('=>')[0] locator_value = locator.split('=>')[1] locator_by = eval( "self.driver.find_element_by_{0}".format(locator_by_str)) try: el = locator_by(locator_value) self.logger.info('find element {0}:{1}'.format( locator_by_str, locator_value)) except NoSuchElementException: self.logger.error('no such element {0}:{1}'.format( locator_by_str, locator_value)) self.get_window_img() except AttributeError as e: self.logger.error('incorrect locator type') return el def type(self, locator, text): el = self.find_element(locator) # el.clear() try: el.send_keys(text) self.logger.info('input value:{0}'.format(text)) except Exception as e: self.logger.error('input value:{0} failed'.format(text)) self.get_window_img() def click(self, locator): el = self.find_element(locator) try: el.click() self.logger.info('click element:{0}'.format(locator)) except Exception as e: self.logger.error('click element:{0} failed'.format(locator)) def refresh(self): self.driver.refresh() self.logger.info('page refresh') def get_page_title(self): self.logger.info('current page title is {0}'.format(self.driver.title)) return self.driver.title
test_dir = './testsuits' suite = unittest.defaultTestLoader.discover(test_dir, pattern="test*.py") #构建测试集 # suite = unittest.TestLoader().loadTestsFromTestCase(LoginTest) # logger.info('构建测试集') # 定义报告生成路径 report_path = '.' + '/report/test_report/' # 格式化时间 now_time = time.strftime("%Y_%m_%d_%H_%M_%S", time.localtime(time.time())) # 测试报告生成格式 HtmlFile = report_path + now_time + "result.html" if __name__ == '__main__': ####################生成报告################# # 生成测试报告 with open(HtmlFile, 'wb+') as f: HTMLTestRunner(stream=f, title="XX项目测试报告", description="用例执行情况").run(suite) logger.info('生成测试报告') ####################发邮件################# # 测试报告目录 new_path = report_path # 查找最新的测试报告文件 rp = Report() new_report = rp.get_new_file(new_path) # 发送测试报告,带附件 rp.send_mail_attr(new_report)
def quit_browser(self): Logger.info("Now, Close and quit the browser.") self.driver.quit()
import os import configparser as cparser from framework.logger import Logger # ===============读取email_config.ini文件设置============ logger=Logger(__name__).logger base_dir = str(os.path.dirname(os.path.dirname(__file__))) # base_dir = base_dir.replace('\\','/') #多余本身/ file_path = base_dir + "/config/config.ini" cf = cparser.ConfigParser() cf.read(file_path, encoding='utf-8') browsers = cf.get("browserType", "browserName") logger.info("You had select %s browser." % browsers) url_c = cf.get("testServer", "URL") logger.info("The test server url is: %s" % url_c)