import pytest import os from time import sleep from selenium import webdriver from TestDatas.GobalDatas import gobal_datas as GD from PageObjects.LoginPage.login_page import LoginPage from Common.plugs.basepage import BasePage from Common.plugs.get_log import Log from Common.plugs.get_config import r_config BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) conf_dir = os.path.join(BASE_DIR, 'Common/config/config.ini').replace('/', '\\') log_dir = r_config(conf_dir, "log", "log_path") logger = Log(log_dir) driver = None @pytest.fixture(scope='class') def setUpDownClass(): logger.info("==========开始执行测试用例集===========") global driver driver = webdriver.Chrome() driver.maximize_window() driver.get(GD.web_login_url) lg = LoginPage(driver) yield (driver, lg) logger.info("==========结束执行测试用例集===========") driver.quit()
import pytest import os from Common.plugs.get_config import r_config from Common.plugs.http_requests import BaseRequest from Common.plugs.get_excle import DoExcle, split_list from Common.plugs.get_log import Log BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) conf_path = os.path.join(BASE_DIR, 'Common/conf/env_config.ini').replace('/', '\\') log_path = r_config(conf_path, "log", "log_path") test_case_path = r_config(conf_path, "test_case", "test_case_path") DE = DoExcle(test_case_path, 'user') caseList = split_list(DE.read_data()) logger = Log(log_path) @pytest.mark.usefixtures('start_module') class TestUser: @pytest.mark.p11 @pytest.mark.parametrize('item', caseList[0]) def test_P1_AddUser(self, start_module, item): logger.info("开始执行 ------- {0} 用例".format(item['description'])) ret = BaseRequest(url=item['url'], headers=start_module[0], method=item['method'], data=eval(item['parm'])).get_json() logger.info(" 请求发送后,开始进行 mysql 数据库检查")
# coding=utf-8 import os, time, logging from Common.plugs.get_config import r_config BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) conf_path = os.path.join(BASE_DIR, 'Common/config/config.ini').replace('/', '\\') log_path = r_config(conf_path, "log", "log_path") class Log(): def __init__(self, log_path): self.logname = os.path.join( log_path, '{0}.log'.format(time.strftime('%Y-%m-%d'))) def __printconsole(self, level, message): # 创建一个logger logger = logging.getLogger() logger.setLevel(logging.DEBUG) # 创建一个handler,用于写入日志文件 fh = logging.FileHandler(self.logname, 'a+', encoding='utf-8') fh.setLevel(logging.DEBUG) # 再创建一个handler,用于输出到控制台 ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # 定义handler的输出格式 formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s') fh.setFormatter(formatter)
import pymysql import os import sys from Common.plugs.get_config import r_config from Common.plugs.get_log import Log BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) if sys.platform == "win32": ENV_CONF_DIR = os.path.join(BASE_DIR, 'Common/conf/env_config.ini').replace('/', '\\') else: ENV_CONF_DIR = os.path.join(BASE_DIR, 'Common/conf/env_config.ini') log_path = r_config(ENV_CONF_DIR, "log", "log_path") database_info = r_config(ENV_CONF_DIR, 'DB', 'database') logger = Log(log_path) class MysqlConnect: def __init__(self, host, port, user, password, database): try: logger.info("准备连接数据库") logger.info("连接信息:host:{0}, port:{1}, user:{2}, password:{3}, database:{4}".format(host, port, user, password, database)) self.db = pymysql.connect(host=host, user=user, password=password, port=port, database=database, charset='utf8') logger.info("连接数据库成功") self.cursor = self.db.cursor()
import pytest import os from Common.plugs.get_config import r_config from Common.plugs.get_log import Log from Common.plugs.get_db import MysqlConnect BASE_DIR = os.path.dirname((os.path.dirname(__file__))) conf_path = os.path.join(BASE_DIR, 'Common/conf/env_config.ini').replace('/', '\\') log_path = r_config(conf_path, "log", "log_path") database_info = r_config(conf_path, 'DB', 'database') logger = Log(log_path) mc = MysqlConnect(eval(database_info)['host'], eval(database_info)['port'], eval(database_info)['user'], eval(database_info)['password'], eval(database_info)['db']) headers = {'User-Agent': 'Mozilla/5.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '30'} @pytest.fixture(scope='session') def project_module_start(): logger.info("==========开始 XX模块 执行测试===========") yield (headers, mc) mc.close_db() logger.info("==========结束 XX模块 测试===========")
import time, datetime, os, sys from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from Common.plugs.get_log import Log from Common.plugs.get_config import r_config BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) if sys.platform == "win32": conf_dir = os.path.join(BASE_DIR, 'Common/config/config.ini').replace('/', '\\') else: conf_dir = os.path.join(BASE_DIR, 'Common/config/config.ini') log_dir = r_config(conf_dir, "log", "log_path") images_dir = r_config(conf_dir, "image", "img_path") logger = Log(log_dir) # 封装基本函数 - 执行日志、 异常处理、 截图 class BasePage: def __init__(self, driver): self.driver = driver # 截图 def save_pictuer(self, doc): filePath = images_dir + '{0}_{1}.png'.format( doc, time.strftime('%Y-%m-%d_%H_%M_%S', time.localtime())) try:
import os, time, logging from Common.plugs.get_config import r_config BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) ENV_CONF_DIR = os.path.join(BASE_DIR, 'Common/conf/env_config.ini').replace('/', '\\') log_path = r_config(ENV_CONF_DIR, "log", "log_path") class Log: def __init__(self, log_path): self.logName = os.path.join( log_path, '{0}.log'.format(time.strftime('%Y-%m-%d'))) def console_log(self, level, message): # 创建一个logger logger = logging.getLogger() logger.setLevel(logging.DEBUG) # 创建一个handler,用于 debug 写入日志文件 debug_file = logging.FileHandler(self.logName, 'a+', encoding='utf-8') debug_file.setLevel(logging.DEBUG) # 再创建一个handler,用于输出到控制台 ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # 定义handler的输出格式 formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
import json import os, sys from openpyxl import load_workbook from Common.plugs.get_config import r_config from Common.plugs.get_log import Log BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) if sys.platform == "win32": ENV_CONF_DIR = os.path.join(BASE_DIR, 'Common/conf/env_config.ini').replace( '/', '\\') else: ENV_CONF_DIR = os.path.join(BASE_DIR, 'Common/conf/env_config.ini') log_path = r_config(ENV_CONF_DIR, "log", "log_path") test_case_path = r_config(ENV_CONF_DIR, 'test_case', 'test_case_path') logger = Log(log_path) class DoExcle: def __init__(self, filename, sheetname): self.filename = filename self.sheetname = sheetname def read_data(self): test_data = [] try: logger.info("准备开始打开 {0} 文件".format(self.filename)) wb = load_workbook(self.filename)