def __init__(self): self.scheme = conf.get_bs("SCHEME") self.ip = conf.get_bs("IP") self.port = conf.get_bs("PORT") self.timeout = conf.get_bs("TIMEOUT") self.log = MyLog().get_logger() self.headers = {} self.data = {} self.url = None self.files = {} self.state = 0 self.s = requests.session()
def __init__(self): """ 初始化 """ self.dns = cx_Oracle.makedsn(ip, post, service_name) self.conn = None self.cursor = None self.log = MyLog.get_log() self.logger = self.log.get_logger()
def selenium_get_url(self, url): try: self.selenium.get('about:blank') self.selenium.get(str(url)) except Exception as ex: log = MyLog.get_log() logger = log.get_logger() logger.error("Can not open the url:[{}]".format(url)) raise ex return self
def setUp(self): """ 测试用例开始前布置环境,查询车辆的vehicleId,记录日志 :return: """ self.log = MyLog.get_log() self.logger = self.log.get_logger() sql = "SELECT VEHICLE_ID FROM V_VEHICLEINFO WHERE ID_NUMBER LIKE '%s'" % rc.get_vehicle( "ID_NUMBER") vid = orc.executeSQL(sql) self.vehicleIds = orc.get_one(vid)[0] print(self.vehicleIds)
def __init__(self): self.scheme = rc.get_bs("SCHEME") self.ip = rc.get_bs("IP") self.port = rc.get_bs("POST") self.timeout = rc.get_bs("TIMEOUT") self.log = MyLog.get_log() self.logger = self.log.get_logger() self.headers = {} self.data = {} self.url = None self.files = {} self.state = 0
class RunTest(object): def __init__(self): self.log = MyLog().get_logger() self.result_path = MyLog().get_result_path() self.case_list_file = os.path.join(ReadConfig.conf_path, "caselist.txt") self.case_file = os.path.join(ReadConfig.proDir, "test_case") self.case_list = [] def get_case_list(self): with open(self.case_list_file) as f: for case in f.readlines(): dcase = case.replace('\n', '') if not dcase.startswith('#') and dcase != '': self.case_list.append(dcase) return self.case_list def get_case_suite(self): self.get_case_list() test_suite = unittest.TestSuite() suite_module = [] for case in self.case_list: discover = unittest.defaultTestLoader.discover(self.case_file, pattern=case + ".py", top_level_dir=None) suite_module.append(discover) # length jugment have problem if len(suite_module) > 0: for suite in suite_module: for test_name in suite: test_suite.addTest(test_name) else: return None return test_suite def run(self): try: suite = self.get_case_suite() print ("suite:", suite) if suite is not None: self.log.info("*************TEST START*************") f = open(self.result_path, 'wb') runner = HTMLTestRunner.HTMLTestRunner(stream=f, title='Test Report', description='Test Description', verbosity=2) runner.run(suite) f.close() else: self.log.info("Have no test case!") except Exception as e: self.log.error(str(e)) finally: self.log.info("*************TEST END***************")
class AssertResult(object): __log = MyLog("AssertResult").logger __response = None def __init__(self): pass def assert_body(self, json_: str): """ 断言请求的json格式的字符串,以断言请求是否成功 :param json_: 请求返回的json的字符串 :return: """ try: result_list = [] dict_object = json.loads(json_) self.__log.info("http请求发送成功") result_list.append(True) result_list.append(dict_object) return result_list except Exception: return False def judge_code(self, status: int, json_: str): """ 对响应的status进行断言 :param status: :param json_: :return: """ void = self.assert_body(json_) if void: dict_obj = void[1] try: if dict_obj["status"] == status: self.__log.info("断言正常,status为{}".format(status)) return True else: self.__log.warning( "业务不正常,status 不满足0" + "-----当前的status的值为{}".format(dict_obj["status"])) return False except Exception as e: self.__log.error("服务器返回出错,json体中没有status字段+\n+{}".format(e)) return False else: self.__log.error("xxxxx")
def __init__(self): """ 初始化需要的参数 :return: """ global log, logger, resultPath # log初始化 log = MyLog.get_log() self.logger = log.get_logger() # 定义结果保存路径 self.resultPath = log.get_report_path() # 取得config\caselist.txt文件路径 self.caseListFile = os.path.join(ReadConfig.conf_path, "caselist.txt") # 取得test_case文件路径 self.caseFile = os.path.join(ReadConfig.proDir, "test_case") # 定义一个空列表,用于保存类名 self.caseList = []
def __init__(self): """ 初始化需要的参数 :return: """ global log, logger, resultPath # log初始化 log = MyLog.get_log("[%s]" % os.path.basename(__file__)) self.logger = log.get_logger() # 定义结果保存路径 self.resultPath = log.get_report_path() # 取得test_case文件路径 self.caseFile = os.path.join(TEST_CASE_TOP_DIR, "web_test_case") # 获取配置文件中的EXCEL路径 self.xls_path = TEST_DATA_EXCEL_FILE self.sheet_name = "INDEX" # 定义一个空列表,用于保存类名 self.caseList = []
# @Time : 2019/9/3 14:22 # @Author : chenky # @ProjectName :ship_20190828 # @FileName: FaceEngine.py # @Software: PyCharm import base64 import hashlib import json import time import uuid import requests from public.Log import MyLog _log = MyLog("FaceEngine").logger class FaceEngine(object): __apiKey = "48d534fc6e7f451ca376baaa750729fc" __session = requests.session() def __init__(self, host): self.partner_add = "api/face/partner/add" self.partner_update = "api/face/partner/update" self.partner_disable = "api/face/partner/disable" self.partner_enable = "api/face/partner/enable" self.partner_query = "api/face/partner/query" self.group_add = "api/face/group/add" self.group_update = "api/face/group/update" self.group_delete = "api/face/group/delete"
import paramunittest from public import GetData import unittest from public.Log import MyLog import time inscase = GetData.get_xls("test_case.xlsx", "mycase") log = MyLog().get_logger() @paramunittest.parametrized(*inscase) class Getdata(unittest.TestCase): def setParameters(self, caseName, method, vehicleIds, cmdCode, cmdVal, sendTitle, paramCode, paramName, Id): self.caseName = caseName self.method = method self.vehicleIds = vehicleIds self.cmdCode = cmdCode self.cmdVal = cmdVal self.sendTitle = sendTitle self.paramCode = paramCode self.paramName = paramName self.Id = Id def setUp(self): print "begin test-------------" def test_getdata(self): time.sleep(1) print "caseName:%s \n method:%s \n vehicleIds:%s \n cmdCode:%s \n cmdVal:%s \n sendTitle:%s \n paramCode:%s \n paramName:%s \n Id:%s \n " % ( self.caseName, self.method, self.vehicleIds, self.cmdCode,
# -*- coding: utf-8 -*- # @Time : 2019/9/30 10:17 # @Author : chenky # @ProjectName :script # @FileName: test_face_compare_images.py # @Software: PyCharm import pytest import time from config.Config import PATH from public.Assert import AssertResult from public.Log import MyLog from public.ReadYaml import ReadYamlUtils from public.Request_tools import RequestTools _log = MyLog("TestCompareImages").logger class TestCompareImages(object): data = ReadYamlUtils(PATH("../test_data/3_face_compare_pictures.yaml")) __data1 = data.read_data_for_face_detect(PATH("../public/img"), PATH("../public"))["cases"] server = RequestTools() @pytest.mark.parametrize("data_engine", __data1) @pytest.mark.run(order=2) def test_01(self, data_engine): method = self.data.read_data()["method"] url = self.data.read_data()["url"] + self.data.read_data()["sign"] headers = self.server.get_header(self.data.read_data()["sign"]) body = data_engine["body"]
class Http(object): def __init__(self): self.scheme = conf.get_bs("SCHEME") self.ip = conf.get_bs("IP") self.port = conf.get_bs("PORT") self.timeout = conf.get_bs("TIMEOUT") self.log = MyLog().get_logger() self.headers = {} self.data = {} self.url = None self.files = {} self.state = 0 self.s = requests.session() def set_url(self, url): """ 接口路径及名称 :param url: :return: """ self.url = "%s://%s:%s%s" % (self.scheme, self.ip, self.port, url) def set_headers(self, header): """ :param header: :return: """ self.headers = header def set_data(self, data): """ :param data: JSON/params :return: """ self.data = data def get(self): """ GET请求 :return: """ try: response = self.s.get(self.url, headers=self.headers, timeout=float(self.timeout)) return response except Exception as e: self.log.error(e) return None def post(self): """ POST请求 :return: """ try: response = self.s.post(self.url, data=self.data, headers=self.headers, timeout=float(self.timeout)) return response except Exception as e: self.log.error(e) return None def set_cookies(self, c): """ :param c: 获取的jsessionID :return: """ requests.utils.add_dict_to_cookiejar(self.s.cookies, c)
# @Time : 2019/9/27 10:57 # @Author : chenky # @ProjectName :script # @FileName: test_face_detect.py # @Software: PyCharm import json import pytest import time from config.Config import PATH from public.Assert import AssertResult from public.Log import MyLog from public.ReadYaml import ReadYamlUtils from public.Request_tools import RequestTools _log = MyLog("TestFaceDetect").logger class TestFaceDetect(object): data = ReadYamlUtils(PATH("../test_data/1_face_identify.yaml")) __data1 = data.read_data_for_face_detect(PATH("../public/img"), PATH("../public"))["cases"] server = RequestTools() @pytest.mark.parametrize("data_engine", __data1) @pytest.mark.run(order=2) def test_01(self, data_engine): method = self.data.read_data()["method"] url = self.data.read_data()["url"] + self.data.read_data()["sign"] headers = self.server.get_header(self.data.read_data()["sign"]) body = data_engine["body"]
# -*- coding: utf-8 -*- # @Time : 2019/9/30 11:28 # @Author : chenky # @ProjectName :script # @FileName: test_face_search_features.py # @Software: PyCharm import pytest import time from config.Config import PATH from public.Assert import AssertResult from public.Log import MyLog from public.ReadYaml import ReadYamlUtils from public.Request_tools import RequestTools _log = MyLog("TestFaceSearchFeatures").logger class TestFaceSearchFeatures(object): data = ReadYamlUtils(PATH("../test_data/6_face_search_features.yaml")) __data1 = data.read_data_for_face_detect( PATH("../public/img"), PATH("../public/features"))["cases"] server = RequestTools() @pytest.mark.parametrize("data_engine", __data1) @pytest.mark.run(order=2) def test_01(self, data_engine): method = self.data.read_data()["method"] url = self.data.read_data()["url"] + self.data.read_data()["sign"] headers = self.server.get_header(self.data.read_data()["sign"]) body = data_engine["body"]
# @Time : 2019/10/8 15:47 # @Author : chenky # @ProjectName :script # @FileName: produce_data.py # @Software: PyCharm import json import uuid from multiprocessing import Process import time from config.Config import ConfigUtils, PATH from public.FaceEngine import FaceEngine from public.Log import MyLog _log = MyLog("produce_data").logger _server = FaceEngine(ConfigUtils(PATH("../config/config.ini")).get_value_by_section_and_option("server", "engine_host")) """ 1. 进行1个合作伙伴增加 2.进行10个用户组(人脸库)的增加 3.对每个用户组进行10W人脸数据的注册 命名规则: 伙伴名称:part+int 组名(人脸库名):group+int 人脸代码:伙伴名称+组名+int 人脸名称:faceName """ _picture_path = "C:/chenkeyun/OtherFile/picture/" def add_one_partner_group():
# @Time : 2019/9/30 11:11 # @Author : chenky # @ProjectName :script # @FileName: test_face_search_images.py # @Software: PyCharm import json import pytest import time from config.Config import PATH from public.Assert import AssertResult from public.Log import MyLog from public.ReadYaml import ReadYamlUtils from public.Request_tools import RequestTools _log = MyLog("TestFaceSearchImages").logger class TestFaceSearchImages(object): data = ReadYamlUtils(PATH("../test_data/5_face_search_picture.yaml")) __data1 = data.read_data_for_face_detect( PATH("../public/img"), PATH("../public/features"))["cases"] server = RequestTools() @pytest.mark.parametrize("data_engine", __data1) @pytest.mark.run(order=2) def test_01(self, data_engine): method = self.data.read_data()["method"] url = self.data.read_data()["url"] + self.data.read_data()["sign"] headers = self.server.get_header(self.data.read_data()["sign"]) body = data_engine["body"]
class TestInterface(unittest.TestCase): def setUp(self): self.log = MyLog().get_logger() self.log.info("Begin test!!!") self.mysql = MyDb.Mysql() def test_insert_one(self): sql = "insert into t_employee_info(name, sex, age, position, adress, description, update_time) values(%s, %s, %s, %s, %s, %s, %s)" dt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") print dt params = ('李俊', '男', 26, '测试工程师', '雨花台区安德门龙福山庄', '门户活动测试工作', dt) self.mysql.insert_one(sql, params) self.mysql.dispose() try: self.assertEqual(1, 2, msg="insert one Failed") except Exception as err: self.log.error(err) def test_get_one(self): sql = "select * from test.t_employee_info" a = self.mysql.get_one(sql) self.mysql.dispose() for k, value in a.items(): print k, value def test_get_many(self): sql = "select * from test.t_employee_info" a = self.mysql.get_many(sql, 2) self.mysql.dispose() for i in a: for k, value in i.items(): print k, value def test_update(self): sql = 'update test.t_employee_info set name = \'李四\' where id = 1' self.mysql.update(sql) self.mysql.dispose() def test_insert_many(self): sql = "insert into t_employee_info(name, sex, age, position, adress, description, update_time) values(%s, %s, %s, %s, %s, %s, %s)" dt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") print dt params = ('刘飞', '男', 26, '测试工程师', '雨花台区安德门龙福山庄', '门户活动测试工作', dt) self.mysql.insert_many(sql, params) self.mysql.dispose() def test_getdata_xls(self): for s in GetData.get_xls("test_case.xlsx", "mycase"): print s # def test_get_cookies(self): # ht = Http() # headers = {"Accept": "application/json, text/javascript, */*; q=0.01", # "Accept-Encoding": "gzip, deflate", # "Accept-Language": "zh-CN,zh;q=0.8", # "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " # "Chrome/58.0.3029.81 Safari/537.36", # 'X-Requested-With': 'XMLHttpRequest', # "Content-Type": "application/json;charset=UTF-8" # } # ht.set_headers(headers) # ht.set_url("/icompaign/getVerifyCode") # gr = ht.get() # jsessionid = GetData.get_cookies(ht.url, "get", data=None) # print gr.status_code # print jsessionid # cookies = {"JSESSIONID": jsessionid} # ht.set_cookies(cookies) # # ht.set_url("/icompaign/loginByPhone.view") # data = {"phone": "18626330613", "code": "111111", "vCode": "4jjm"} # data = json.dumps(data) # ht.set_data(data) # r = ht.post() # print r.status_code # print r.text def tearDown(self): self.log.info("End test!!!")
# @ProjectName :XiaMenTerminalWeb # @FileName: Base.py # @Software: PyCharm import time from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.remote.webdriver import WebDriver from selenium.webdriver.remote.webelement import WebElement from selenium.webdriver.support import expected_conditions from selenium.webdriver.support.select import Select from selenium.webdriver.support.wait import WebDriverWait from public.Log import MyLog _log = MyLog("Base").logger class Base(object): def __init__(self, driver_a: WebDriver): self.driver = driver_a self.timeout = 20 self.t = 0.2 super().__init__() def find_element(self, loc: tuple) -> WebElement: """ By WebElement and WebDriver to find and click the expected element , if not found ,then return else return the Element Object :param loc:
def setUp(self): self.log = MyLog().get_logger() self.log.info("Begin test!!!") self.mysql = MyDb.Mysql()
# @Time : 2019/9/30 9:18 # @Author : chenky # @ProjectName :script # @FileName: test_get_features.py # @Software: PyCharm import allure import pytest import time from config.Config import PATH from public.Assert import AssertResult from public.Log import MyLog from public.ReadYaml import ReadYamlUtils from public.Request_tools import RequestTools _log = MyLog("TestGetFeatures").logger # @allure.story("获取人脸特征模块") class TestGetFeatures(object): data = ReadYamlUtils(PATH("../test_data/2_face_features_get.yaml")) __data1 = data.read_data_for_face_detect(PATH("../public/img"), PATH("../public"))["cases"] server = RequestTools() @pytest.mark.parametrize("data_engine", __data1) @pytest.mark.run(order=2) # @allure.testcase("测试标题") def test_01(self, data_engine): method = self.data.read_data()["method"] url = self.data.read_data()["url"] + self.data.read_data()["sign"]
def __init__(self): self.log = MyLog().get_logger() self.result_path = MyLog().get_result_path() self.case_list_file = os.path.join(ReadConfig.conf_path, "caselist.txt") self.case_file = os.path.join(ReadConfig.proDir, "test_case") self.case_list = []
# -*- coding:utf-8 -*- #__author:Administrator #date: 2018/1/4 import os import json from public.MyHttp import Http from xlrd import open_workbook from public import ReadConfig from public.Log import MyLog import requests import time rc = ReadConfig.ReadConfig("808_config.ini") ht = Http() log = MyLog.get_log() logger = log.get_logger() def get_xls(xls_name, sheet_name): """ 获取excel表中指定sheet数据,保存到列表中返回 :param xls_name: excel文件名 :param sheet_name: sheet表名 :return: """ cls = [] xls_path = os.path.join(ReadConfig.proDir, "test_case_data", xls_name) # print(xls_path) file = open_workbook(xls_path) sheet = file.sheet_by_name(sheet_name) sheet_nrows = sheet.nrows
# -*- coding: utf-8 -*- # @Time : 2019/9/26 17:00 # @Author : chenky # @ProjectName :script # @FileName: Request_tools.py # @Software: PyCharm import hashlib import json import uuid import requests import time from public.Log import MyLog _log = MyLog("RequestTools").logger class RequestTools(object): __apiKey = "48d534fc6e7f451ca376baaa750729fc" __apiKey_self = "6fb96353aff34a1186a29e6f038a7582" def __init__(self): self.session = requests.session() @staticmethod def get_uuid(): return str(uuid.uuid1()).replace("-", "") @staticmethod def get_json_file(object_: dict): try:
# -*- coding: utf-8 -*- # @Time : 2019/9/26 17:50 # @Author : chenky # @ProjectName :script # @FileName: ReadYaml.py # @Software: PyCharm import base64 import json import yaml import re from public.Log import MyLog from public.readConfig import PATH _log = MyLog("ReadYamlUtils").logger class ReadYamlUtils(object): def __init__(self, filename): self.filename = filename @staticmethod def get_image_to_base64(filename: str): try: with open(filename, mode="rb") as fp: imaga_data = fp.read() base64_data = base64.b64encode(imaga_data) return str(base64_data, encoding="utf-8") except FileNotFoundError: _log.error(FileNotFoundError.__name__)
# -*- coding: utf-8 -*- # @Time : 2019/9/30 10:38 # @Author : chenky # @ProjectName :script # @FileName: test_face_compare_features.py # @Software: PyCharm import pytest import time from config.Config import PATH from public.Assert import AssertResult from public.Log import MyLog from public.ReadYaml import ReadYamlUtils from public.Request_tools import RequestTools _log = MyLog("TestCompareFeatures").logger class TestCompareFeatures(object): data = ReadYamlUtils(PATH("../test_data/4_face_compare_features.yaml")) __data1 = data.read_data_for_face_detect( PATH("../public/img"), PATH("../public/features"))["cases"] server = RequestTools() @pytest.mark.parametrize("data_engine", __data1) @pytest.mark.run(order=2) def test_01(self, data_engine): method = self.data.read_data()["method"] url = self.data.read_data()["url"] + self.data.read_data()["sign"] headers = self.server.get_header(self.data.read_data()["sign"]) body = data_engine["body"]