Exemple #1
0
class runner():
    casedir1 = getcwd.get_cwd()+'//testsuites/ApprBase'
    casedir2 = getcwd.get_cwd() + '//testsuites/ApprControl'
    casedir3 = getcwd.get_cwd() + '//testsuites/ApprSupport'
    #(unittest.defaultTestLoader(): defaultTestLoader()类,通过该类下面的discover()方法可自动更具测试目录start_dir匹配查找测试用例文件(test*.py),
#并将查找到的测试用例组装到测试套件,因此可以直接通过run()方法执行discover)
    discover1 = unittest.defaultTestLoader.discover(casedir1)
    print("ApprBse cases:%s"%discover1)
    discover2 = unittest.defaultTestLoader.discover(casedir2,top_level_dir="testsuites")
    print("ApprControl cases:%s"%discover2)
    discover3 = unittest.defaultTestLoader.discover(casedir3,top_level_dir="testsuites")
    print("ApprSupport cases:%s"%discover3)

    #lastPath = os.path.dirname(os.getcwd())#获取当前路径的上一级
    resultDir = getcwd.get_cwd() + '/test_report/' #报告存放路径
    now = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime(time.time()))
    filename = resultDir + now + "report.html"
    fp = open(filename, 'wb')
    cases=['ApprBase','ApprControl','ApprSupoort']
    def run(self,discover,s):
        runner = HTMLTestRunner.HTMLTestRunner(stream=self.fp,title=str(self.cases[s])+u'测试报告',description=u'用例执行情况:')
        runner.run(discover)
    def muti_run(self):
        t1 = threading.Thread(target=self.run,args=(self.discover1,0,))
        t2 = threading.Thread(target=self.run, args=(self.discover2,1,))
        t3 = threading.Thread(target=self.run,args=(self.discover3,2,))
        t1.start()
        t2.start()
        t3.start()
        t1.join()
        t2.join()
        t3.join()
        self.fp.close()
Exemple #2
0
    def __init__(self,logger):

        #创建一个logger
        self.logger=logging.getLogger(logger)
        self.logger.setLevel(logging.DEBUG)

        #创建一个handler,用于写入日志文件
        rq=time.strftime('%Y%m%d%H%M',time.localtime(time.time()))
        log_path = getcwd.get_cwd() + '/logs/'
        #log_path=os.path.dirname(os.path.dirname(os.getcwd()))+'/logs/'
        # log_path = (os.path.dirname(os.getcwd()) + '/Logs/'
        # log_path = 'D:\PycharmProjects\General Approval'+'/logs/'
        log_name = log_path + rq + '.log'
        fh= logging.FileHandler(log_name,encoding = 'utf-8')
        fh.setLevel(logging.INFO)

        #再创建一个handler,用于输出控制台
        ch = logging.StreamHandler()
        ch.setLevel(logging.INFO)

        #定义handler的输出格式
        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        fh.setFormatter(formatter)
        ch.setFormatter(formatter)

        #给logger添加handler
        self.logger.addHandler(fh)
        self.logger.addHandler(ch)
Exemple #3
0
    def open_browser(self, driver):
        config = configparser.ConfigParser()
        file_path = getcwd.get_cwd() + '/config/config.ini'
        config.read(file_path)

        browser = config.get("browserType", "browserName")
        logger.info("you had select %s browser." % browser)
        url = config.get("testServer", "URL")
        logger.info("The test server url is:%s" % url)

        if browser == "Firefox":
            driver = webdriver.Firefox(
                executable_path=self.firefox_driver_path)
            logger.info("Starting firefox browser.")
        elif browser == "Chrome":
            driver = webdriver.Chrome(self.chrome_driver_path)
            logger.info("Starting chrome browser.")
        elif browser == "IE":
            driver = webdriver.Ie(self.ie_driver_path)
            logger.info("Starting IE browser")

        driver.get(url)
        logger.info("Open url:%s" % url)
        driver.maximize_window()
        logger.info("Maxmize the current window.")
        driver.implicitly_wait(8)
        logger.info("Set implicitly wait 8 seconds.")
        return driver
 def delete_all(self):
     dir_list = ['logs', 'screenshots', 'test_report']  # 要删除文件的目录名
     for dir in dir_list:
         dirPath = getcwd.get_cwd() + '\\' + dir  # 拼接删除目录完整路径
         file_list = os.listdir(dirPath)  # 返回目录下的文件list
         for i in file_list:
             file_path = os.path.join(dirPath, i)  # 拼接文件的完整路径
             os.remove(file_path)
class BrowserEngine(object):

    dir = getcwd.get_cwd()
    #chrome_driver_path = dir + '/tools/chromedriver.exe'
    firefox_driver_path = dir + '/tools/geckodriver.exe'
    ie_driver_path = dir + '/tools/IEDriverServer.exe'

    def __init__(self, driver):
        self.driver = driver

    def open_browser(self, driver):
        config = configparser.ConfigParser()
        file_path = getcwd.get_cwd() + '/config/config.ini'
        config.read(file_path)

        browser = config.get("browserType", "browserName")
        logger.info("you had select %s browser." % browser)
        url = config.get("testServer", "URL")
        logger.info("The test server url is:%s" % url)

        if browser == "Firefox":
            driver = webdriver.Firefox(
                executable_path=self.firefox_driver_path)
            logger.info("Starting firefox browser.")
        elif browser == "Chrome":
            chrome_options = webdriver.ChromeOptions()
            chrome_options.add_argument('--headless')  # 指定无界面形式运行
            chrome_options.add_argument('--disable-dev-shm-usage')
            chrome_options.add_argument('--no-sandbox')
            #chrome_options.add_argument('--start-maximized')
            chrome_options.add_argument('window-size=1920x1080')  # 指定浏览器分辨率
            chrome_options.add_argument(
                '--disable-gpu')  # 谷歌文档提到需要加上这个属性来规避bug
            #driver = webdriver.Chrome()
            driver = webdriver.Chrome(chrome_options=chrome_options)
            logger.info("Starting chrome browser.")
        elif browser == "IE":
            driver = webdriver.Ie(self.ie_driver_path)
            logger.info("Starting IE browser")

        driver.get(url)
        logger.info("Open url:%s" % url)
        driver.maximize_window()
        logger.info("Maxmize the current window.")
        driver.implicitly_wait(10)
        logger.info("Set implicitly wait 8 seconds.")
        return driver

    def browse_name(self):
        config = configparser.ConfigParser()
        file_path = getcwd.get_cwd() + '/config/config.ini'
        config.read(file_path)
        browser = config.get("browserType", "browserName")
        return browser

    def quit_browse(self):
        logger.info("Now,close and quit the browser")
        self.driver.quit()
 def send_report(self):
     dir = getcwd.get_cwd()
     result_dir = dir + '/test_report'
     lists = os.listdir(result_dir)
     lists.sort(key=lambda fn: os.path.getatime(result_dir + "\\" + fn))
     # 找到最新生成的文件
     file_new = os.path.join(result_dir, lists[-1])
     logger.info("the report:" + file_new + "will be send")
     self.send_mail(file_new)
 def get_windows_img(self):
     """
     在这里我们把file_path这个参数写死,直接保存到我们项目根目录的一个文件夹.\Screenshots下
     """
     file_path = getcwd.get_cwd() + '/screenshots/'
     rq = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
     screen_name = file_path + rq + '.png'
     try:
         self.driver.get_screenshot_as_file(screen_name)
         logger.info("Had take screenshot and save to folder : /screenshots")
         print(screen_name)
     except NameError as e:
         logger.error("Failed to take screenshot! %s" % e)
Exemple #8
0
class BrowserEngine(object):

    dir = getcwd.get_cwd()
    chrome_driver_path = dir + '/tools/chromedriver.exe'
    firefox_driver_path = dir + '/tools/geckodriver.exe'
    ie_driver_path = dir + '/tools/IEDriverServer.exe'

    def __init__(self, driver):
        self.driver = driver

    def open_browser(self, driver):
        config = configparser.ConfigParser()
        file_path = getcwd.get_cwd() + '/config/config.ini'
        config.read(file_path)

        browser = config.get("browserType", "browserName")
        logger.info("you had select %s browser." % browser)
        url = config.get("testServer", "URL")
        logger.info("The test server url is:%s" % url)

        if browser == "Firefox":
            driver = webdriver.Firefox(
                executable_path=self.firefox_driver_path)
            logger.info("Starting firefox browser.")
        elif browser == "Chrome":
            driver = webdriver.Chrome(self.chrome_driver_path)
            logger.info("Starting chrome browser.")
        elif browser == "IE":
            driver = webdriver.Ie(self.ie_driver_path)
            logger.info("Starting IE browser")

        driver.get(url)
        logger.info("Open url:%s" % url)
        driver.maximize_window()
        logger.info("Maxmize the current window.")
        driver.implicitly_wait(8)
        logger.info("Set implicitly wait 8 seconds.")
        return driver

    def browse_name(self):
        config = configparser.ConfigParser()
        file_path = getcwd.get_cwd() + '/config/config.ini'
        config.read(file_path)
        browser = config.get("browserType", "browserName")
        return browser

    def quit_browse(self):
        logger.info("Now,close and quit the browser")
        self.driver.quit()
    def login(self):
        u'''根据配置文件读取用户登录'''

        browser = BrowserEngine(self)
        self.driver = browser.open_browser(self)
        user_path = getcwd.get_cwd() + '/config/user_info.txt'
        loginpage = Login_logout(self.driver)
        user_file = open(user_path)
        all_values = user_file.readlines()
        values = all_values[0]
        user_file.close()
        username = values.split(',')[0]
        userpasswrod = values.split(',')[1]
        loginpage.login(username, userpasswrod)
        return self.driver
Exemple #10
0
 def remove_logs(self):
     """到期删除日志,截图,报告文件"""
     dir_list = ['logs', 'screenshots','test_report']  # 要删除文件的目录名
     for dir in dir_list:
         dirPath = getcwd.get_cwd() + '\\' + dir  # 拼接删除目录完整路径
         file_list = os.listdir(dirPath)  # 返回目录下的文件list
         for i in file_list:
             file_path = os.path.join(dirPath, i)  # 拼接文件的完整路径
             t_list = self.TimeStampToTime(os.path.getctime(file_path)).split('-')
             now_list = self.TimeStampToTime(time.time()).split('-')
             t = datetime.datetime(int(t_list[0]), int(t_list[1]), int(t_list[2]))  # 将时间转换成datetime.datetime 类型
             now = datetime.datetime(int(now_list[0]), int(now_list[1]), int(now_list[2]))
             if (now - t).days > 6 or os.path.getsize(file_path) > 1048576:  # 时间大于6天,大小大于1m删除
                 os.remove(file_path)
                 print("had delete file:%s" % i)
    def test_login(self):
        u'''登录政务系统测试用例,用户名:admin'''

        user_path = getcwd.get_cwd() + '/config/user_info.txt'
        loginpage = Login_logout(self.driver)
        user_file = open(user_path)
        all_values = user_file.readlines()
        values = all_values[0]
        user_file.close()
        username = values.split(',')[0]
        userpasswrod = values.split(',')[1]
        loginpage.login(username, userpasswrod)
        try:
            title = loginpage.get_title()
            self.assertEqual('网上审批系统', title)
        except Exception as e:
            loginpage.get_windows_img()
            raise e
#-*- coding: UTF-8 -*-
import time
import unittest
import HTMLTestRunner
from framework import getcwd
from framework.email_report import EmailReport
from framework.logger import logger
#from testsuites.ApprBase.登录与注销.test_loginout import Loginout


# 指定测试报告文件
report_path = getcwd.get_cwd() + '/test_report/'
now = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime(time.time()))

HtmlFile = report_path + now + "report.html"

    # 加载所有测试套件中的所有测试用例
suite_path = getcwd.get_cwd() + r"\testsuites"
suite = unittest.TestLoader().discover(suite_path)

# suite = unittest.TestSuite()
# suite.addTest(Loginout('test_login'))
# suite.addTest(Loginout('test_logout'))

if __name__ == '__main__':

    with open(HtmlFile, 'wb') as fp:   # 打开测试报告文件,用于写入测试报告
        runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"政务系统自动化测试报告",
                                               description=u"备注:测试报告附件请用chorome打开,否则无法展开详情",
                                               verbosity=2)
        runner.run(suite)
import os
import codecs
import configparser
from framework import getcwd

#proDir = os.path.split(os.path.realpath(__file__))[0]
proDir = getcwd.get_cwd()
configPath = os.path.join(proDir, "config/config.ini")


class ReadConfig:
    def __init__(self):
        fd = open(configPath)
        data = fd.read()

        #  remove BOM
        if data[:3] == codecs.BOM_UTF8:
            data = data[3:]
            file = codecs.open(configPath, "w")
            file.write(data)
            file.close()
        fd.close()

        self.cf = configparser.ConfigParser()
        self.cf.read(configPath)

    def get_mysql(self, name):
        value = self.cf.get("MYSQL", name)
        return value

    def get_oracle(self, name):
 def browse_name(self):
     config = configparser.ConfigParser()
     file_path = getcwd.get_cwd() + '/config/config.ini'
     config.read(file_path)
     browser = config.get("browserType", "browserName")
     return browser