当前位置: 首页 > news >正文

做视频网站投入多少要做网站到哪里做

做视频网站投入多少,要做网站到哪里做,成都住建局官网住建蓉e办,河北建设工程信息交易中心最近受到万点暴击#xff0c;由于公司业务出现问题#xff0c;工作任务没那么繁重#xff0c;有时间摸索seleniumpython自动化测试#xff0c;结合网上查到的资料自己编写出适合web自动化测试的框架#xff0c;由于本人也是刚刚开始学习python#xff0c;这套自动化框架目…最近受到万点暴击由于公司业务出现问题工作任务没那么繁重有时间摸索seleniumpython自动化测试结合网上查到的资料自己编写出适合web自动化测试的框架由于本人也是刚刚开始学习python这套自动化框架目前已经基本完成了所以总结下编写的得失便于以后回顾温习有许多不足的的地方也遇到了各种奇葩问题希望大神们多多指教。 首先我们要了解什么是自动化测试简单的说编写代码、脚本让软件自动运行发现缺陷代替部分的手工测试。了解了自动化测试后我们要清楚一个框架需要分那些模块: 上图的框架适合大多数的自动化测试比如web UI  、接口自动化测试都可以采用如大佬有好的方法请多多指教简单说明下每个模块 common存放一些共通的方法data存放一些文件信息logs存放程序中写入的日志信息picture存放程序中截图文件信息report存放测试报告test_case存放编写具体的测试用例conf.ini、readconf.py存放编写的配置信息 下面就具体介绍每个模块的内容conf.ini主要存放一些不会轻易改变的信息编写的代码如下 [DATABASE] host 127.0.0.1 username root password root port 3306 database cai_test[HTTP] # 接口的url baseurl http://xx.xxxx.xx port 8080 timeout 1.0 readconf.py文件主要用于读取conf.ini中的数据信息 # *_*coding:utf-8 *_* __author__ Test Lu import os,codecs import configparser prodir os.path.dirname(os.path.abspath(__file__)) conf_prodir os.path.join(prodir,conf.ini) class Read_conf():def __init__(self):with open(conf_prodir) as fd:data fd.read()#清空文件信息if data[:3] codecs.BOM_UTF8:data data[3:]file codecs.open(conf_prodir,w)file.write(data)file.close()self.cf configparser.ConfigParser()self.cf.read(conf_prodir)def get_http(self,name):value self.cf.get(HTTP,name)return valuedef get_db(self,name):return self.cf.get(DATABASE,name) 这里需要注意python3.0以上版本与python2.7版本import configparser的方法有一些区别 读取一些配置文集就介绍完了下面就说说common包下的公共文件 现在就从上往下结束吧common主要是封装的一些定位元素的方法 # *_*coding:utf-8 *_* __author__ Test Lu from selenium import webdriver import time,os import common.config # from common.logs import MyLog project_dir os.path.dirname(os.path.dirname(os.path.abspath(__file__))) class Comm(object):def __init__(self,driver):self.driver driver# self.driver webdriver.Firefox()self.driver webdriver.Chrome()self.driver.maximize_window()def open_url(self,url):self.driver.get(url)self.driver.implicitly_wait(30)# selenium 定位方法def locate_element(self,loatetype,value):if (loatetype id):el self.driver.find_element_by_id(value)if (loatetype name):el self.driver.find_element_by_name(value)if (loatetype class_name):el self.driver.find_element_by_class_name(value)if (loatetype tag_name):el self.driver.find_elements_by_tag_name(value)if (loatetype link):el self.driver.find_element_by_link_text(value)if (loatetype css):el self.driver.find_element_by_css_selector(value)if (loatetype partial_link):el self.driver.find_element_by_partial_link_text(value)if (loatetype xpath):el self.driver.find_element_by_xpath(value)return el if el else None# selenium 点击def click(self,loatetype,value):self.locate_element(loatetype,value).click()#selenium 输入def input_data(self,loatetype,value,data):self.locate_element(loatetype,value).send_keys(data)#获取定位到的指定元素def get_text(self, loatetype, value):return self.locate_element(loatetype, value).text# 获取标签属性def get_attr(self, loatetype, value, attr):return self.locate_element(loatetype, value).get_attribute(attr)# 页面截图def sc_shot(self,id):for filename in os.listdir(os.path.dirname(os.getcwd())) :if filename picture:breakelse:os.mkdir(os.path.dirname(os.getcwd()) /picture/)photo self.driver.get_screenshot_as_file(project_dir /picture/ str(id) str(_) time.strftime(%Y-%m-%d-%H-%M-%S) .png)return photodef __del__(self):time.sleep(2)self.driver.close()self.driver.quit() 下面介绍下config文件主要用于读取文件中的信息 import os,xlrd from common.logs import MyLog from xml.etree import ElementTree as ElementTree mylogger MyLog.get_log() project_dir os.path.dirname(os.getcwd())def user_Add():excel文件中读取用户登录信息with xlrd.open_workbook(project_dir/data/test_data.xlsx) as files:table_user files.sheet_by_name(userdata)try:username str(int(table_user.cell(1,0).value))except:username str(table_user.cell(1,0).value)try:passwd str(int(table_user.cell(1,1).value))except:passwd str(table_user.cell(1,1).value)try:check str(int(table_user.cell(1, 2).value))except Exception:check str(table_user.cell(1, 2).value)table_url files.sheet_by_name(base_url)base_url str(table_url.cell(1,0).value)return (username,passwd,base_url,check) #从xml文件中读取信息定义全局一个字典来存取xml读出的信息 database{} def set_read_xml():sql_path os.path.join(project_dir,data,SQL.xml)data ElementTree.parse(sql_path)for db in data.findall(database):name db.get(name)table {}for tb in db.getchildren():table_name tb.get(name)sql {}for data in tb.getchildren():sql_id data.get(id)sql[sql_id] data.texttable[table_name] sqldatabase[name] tablemylogger.info(读取的xml文件的信息%s %database) def get_sql_sen(database_name,table_name,sql_id):set_read_xml()db database.get(database_name).get(table_name)if db.get(sql_id):sql db.get(sql_id).strip()mylogger.info(返回sql语句信息%s % sql)return sqlelse:mylogger.info(查下的信息为空,传递的参数有误数据库名称【%s】表信息【%s】查询的id【%s】%(database_name,table_name,sql_id)) 接着介绍最简单的日志logs.py模块 # logging模块支持我们自定义封装一个新日志类 import logging,time import os.path class Logger(object):def __init__(self, logger,cases./): self.logger logging.getLogger(logger)self.logger.setLevel(logging.DEBUG)self.cases cases# 创建一个handler用于写入日志文件for filename in os.listdir(os.path.dirname(os.getcwd())):if filename logs:breakelse:os.mkdir(os.path.dirname(os.getcwd())/logs)rq time.strftime(%Y%m%d%H%M, time.localtime(time.time()))log_path os.path.dirname(os.getcwd()) /logs/ log_name log_path rq .log # 文件名# 将日志写入磁盘fh logging.FileHandler(log_name)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添加handlerself.logger.addHandler(fh)self.logger.addHandler(ch)def getlog(self):return self.logger common模块最后一个是test_runner.py这个方法主要是用来执行全部的测试用例 import time,HTMLTestRunner import unittest from common.config import * project_dir os.path.abspath(os.path.join(os.path.dirname(__file__),os.pardir)) class TestRunner(object): 执行测试用例 def __init__(self, cases../,titleAuto Test Report,descriptionTest case execution):self.cases casesself.title titleself.des descriptiondef run(self):for filename in os.listdir(project_dir):if filename report:breakelse:os.mkdir(project_dir/report)# fp open(project_dir/report/ report.html, wb)now time.strftime(%Y-%m-%d_%H_%M_%S)# fp open(project_dir/report/result.html, wb)fp open(project_dir/report/ now result.html, wb)tests unittest.defaultTestLoader.discover(self.cases,patterntest*.py,top_level_dirNone)runner HTMLTestRunner.HTMLTestRunner(streamfp, titleself.title, descriptionself.des)runner.run(tests)fp.close() 以上就是common公共模块所有的模块简单说下在写这些公共模块时出现了各种问题特别是读取xml文件的唉对于一个python的小白真是心酸啊接着说下db模块的内容db模块主要是读取sql语句以及返回对应的值 import pymysql import readconf import common.config as conf readconf_conf readconf.Read_conf()host readconf_conf.get_db(host) username readconf_conf.get_db(username) password readconf_conf.get_db(password) port readconf_conf.get_db(port) database readconf_conf.get_db(database) config_db {host: str(host),user: username,password: password,port: int(port),db: database } class Mysql_DB():def __init__(self):初始化数据库self.db Noneself.cursor Nonedef connect_db(self):创建连接数据库try:self.db pymysql.connect(**config_db)#创建游标位置self.cursor self.db.cursor()# print(链接数据库成功)conf.mylogger.info(链接IP为%s的%s数据库成功 %(host,database))except ConnectionError as ex:conf.mylogger.error(ex)def get_sql_result(self,sql,params,state):self.connect_db()try:self.cursor.execute(sql, params)self.db.commit()# return self.cursorexcept ConnectionError as ex:self.db.rollback()if state0:return self.cursor.fetchone()else:return self.cursor.fetchall()def close_db(self):print(关闭数据库)conf.mylogger.info(关闭数据库)self.db.close() 刚开始写db模块是一直对字典模块的信息怎样传递到数据链接的模块进过网上查询好些资料才彻底解决对自己来说也是一种进步哈哈下面说下自己踩的坑帮助自己以后学习**config_db把字典变成关键字参数传递 下面举例说明下 如果kwargsa:1,b:2,c:3那么**kwargs这个等价为test(a1,b2,c3)是不是很简单哈哈以上就是框架的主要模块其他的模块每个项目与每个系统都不一样在这里就是列举出来了因为就算写出来大家也不能复用下面就给大家看看小白还有哪些模块 看下了下data模块下的xml模块大家可能用的到就给大家贴出来吧因为ui测试主要就用到select与delete语句所以也没有写多么复杂的sql语句 ?xml version1.0 encodingutf-8 ? datadatabase namedatabase_membertable nametable_membersql idselect_memberselect * from user where real_name%s/sqlsql idselect_member_oneselect mobile from user where mobile%s/sqlsql iddelete_memberdelete from user where mobile%s/sqlsql idinsert_memberinsert into user(id) value(%s)/sqlsql idupdate_memberuodate user set real_name %s where uuid%s/sql/table/database /data 下面介绍下其他模块的内容test_data.xlsx文件主要是存放一些用户信息以及url信息这样修改用户信息与url信息就不要修改代码方便以后操作logs是在代码运行时候产生的日志信息picture是存放图片信息report存放输入的报告信息 test_case是编写用户的模块需要所有的用例名称都要以test开头来命名哦这是因为unittest在进行测试时会自动匹配test_case文件夹下面所有test开头的.py文件 Python接口自动化测试零基础入门到精通2023最新版
http://wiki.neutronadmin.com/news/72818/

相关文章:

  • 网站项目综合设计作业 代做番禺人才网车床工铣床工招聘
  • 带着做计算机项目的网站k歌里的相片是通过网站做的吗
  • 坑梓网站建设信息禅城网站建设费用
  • 学校建设评建工作网站珠海网站设计平台
  • 订阅号自定义可以做链接网站不知名的集团门户网站建设费用
  • 网站建设需要的客户资料黄页88企业名录
  • 网站常规后台开通网站需要什么手续
  • 茂名免费自助建站模板景观园林设计公司
  • 网站备案名字做带会员后台的网站用什么软件
  • 上海网站备案在哪里免费的网站域名和空间
  • 网站建设公司 信科网络无锡设计师网站
  • 网站规划怎么做电商网站里的图片
  • 做面食网站优化网站搜索
  • 建设门户网站价格兰州网站开发公司
  • 选择网站建设公司应该注意什么网站板块设计有哪些
  • 个人做房产网站小程序app开发多少钱
  • 网站广告条怎么做wordpress登录地址加密
  • 食品行业网站开发怎么制作网站?
  • 网站优化推广服务网站如何调用百度地图
  • 如何构建网站平台数学网站怎么做
  • phpwind网站公司网站开发费算什么费用
  • 十大网站建设排名四川省城乡住房建设厅网站
  • 安阳河南网站建设注册网页代码
  • 网站建设毕业答辩ppt怎么写有没有做网站源代码修改的
  • 网站 被黑wordpress空间安装教程
  • 海南省城乡建设部网站首页怎么用linux做网站服务器
  • 网站建设视频代码wordpress安装图片不显示
  • 网站登录界面模板html龙岩
  • 有哪些可以做策划方案的网站怎么让网站绑定域名
  • 网站用什么服务器wordpress 文章主题图