什么是网站建设外包,手机软件开发培训班,高端网站建设哪家便宜,单页面网站模板怎么做1. 自动化测试用的什么框架#xff1f;
第一种#xff1a;PythonSeleniumuittest框架
首先是拿到需求文档#xff0c;基于这个需求去进行搭建。 用pytestrequestallure 这些第三方库进行编写自动化脚本。
举个例子一般的话整个的一个自动化的搭建是分为6层嘛#xff1a…
1. 自动化测试用的什么框架
第一种PythonSeleniumuittest框架
首先是拿到需求文档基于这个需求去进行搭建。 用pytestrequestallure 这些第三方库进行编写自动化脚本。
举个例子一般的话整个的一个自动化的搭建是分为6层嘛
第一层:会去做一个公共层里面去放一些方法像可调用的公共函数、数据库之类的。(这些函数是放在yaml文件存放一些数据库地址还有URL路径还有业务中会用的比如车辆车型还有用户名密码这一些)
第二层:会做一个配置层然后配置一些像config这样的yaml配置文件log配置文件环境配置文件数据库的配置文件里面会放一些路径像我们业务当中会用到的一些密码信息之类的
第三层:数据层里面会放一些比方说一些excle 表格
第四层:用例层比方说云端升级任务。任务有分为手动、自动、预约。还有像任务的审核审核之后下载下发任务等。包括一些异常场景都在这个用例层里面。
第五层:主函数就是调用以上分层里的方法实例。去执行这个测试用例吧。
最后就是报告层:生成一个allure 的报告大致就是这个样子。 第二种如何介绍自动化项目
在面试过程中要向面试官讲解自己做过的自动化项目。如何介绍下面简单说下
可以参考:
面试官你好最近我做的xxx项目中有接口自动化部分下面简单给您介绍一下:
1.使用的技术主要是 Python Pytest Requests CSV pytest-html。
a.主要使用Python编程语言实现
b.Requests 库主要用来模拟发送接口请求
c.Pytest 主要用来维护接口自动化测试用例。
d.CSV模块主要用来进行数据驱动(数据驱动也可以使用Excel文件Excel文件使用 Openpyxl 库来操作)
e.pyhtml-html主要用来作为测试报告
2.另外在接口自动化也要处理接口的上下游传参
a.我在接口上下游传参的接口主要操作:
i.先定义字典格式的数据。
ii.在上游接口中编写用例用例通过之后给字典赋值。
ii.在下游接口中引用字典中的字段值。
b.主要通过字典的方式继续上下游传参。
3针对单接口进行参数化处理的时候主要使用 csv文件数据驱动
a.首先将测试数据保存到csv文件中
b通过Python的csv模块来读取csv文件中的内容
c借助pytes模块中的参数化功能进行数据驱动。
4.最后自动化代码完成之后将代码存放在公司的git服务器上搭建Jenkins 平台从Jenkins平台上运行接口代码代码运行完成之后通过Jenkins会自动发送邮件到公司邮箱。如果接口出现问题可以第一时间收到通知。
以上就是我最近项目中使用的自动化。简单概括就是使用 PythonpytestrequestsJenkins实现接口自动化平台的搭建。
3.python有哪些数据类型
答:有基本数据类型和集合数据类型两种基本数据类型有数字型intfloatcomplex字符串布尔型集合数据类型有列表元祖字典集合。 4.列表和元祖的区别是什么
答共同点访问数据都是通过索引访问都可以存放各种类型的数据
不同点定义上---列表是[]中括号元祖是()圆括号
使用上---可对列表进行增删改元组不允许修改。
5.怎么把一个元祖转换为list
答python 把元组转为列表的方法是在元组前面添加list
list_a (1, 9, 10, 6)
print(list_a) # 打印结果 (1, 9, 10, 6) 元组是带小括号的
list_b list(list_a)
print(list_b) # 打印结果 [1, 9, 10, 6] 列表是带中括号的 6.List你怎么正向排序和反向排序
答正向排序升序--a.sort() 反向排序降序--a.sort(reverseTrue) 7.列表和字典的区别是什么
答1.列表是有顺序的如果按照某种顺序向列表添加元素这些元素就会保持顺序字典是无序的如果向字典添加内容显示的顺序可能会和添加的顺序不同
2.列表中的元素是使用索引访问的而字典是使用键来访问的 8.Python循环体里面break和continue有什么区别
答break--在for循环或者while循环结构中使用break语句用于结束整个循环 continue--在for循环或while循环结构中使用break语句用于跳过本次循环中的剩余语句然后继续进行下一轮循环 9.Pycharm的自动化脚本的流程是怎么样的
首先根据需求文档确定做自动化的内容在具体编写自动化测试用例前我们需要建一个测试类继承unittest就内泰斯特里面的TestCase类继承这个类之后我们才是真正的使用unittest就内泰斯特框架去写测试用例编写测试用例的步骤如下
1首先导入unittest就内泰斯特模块
2再就是创建一个测试类并继承unittest.TestCase()
3然后用setup()斯塔普和tearDown()函数来定义初始化工作和收尾工作
4其次中间定义测试方法方法名必须以test_为前缀
5再就是在用例中添加断言判断来判断运行结果
常见的断言assertEqual(a,b)-断言a和b是否相等相等则测试通过 assertNotEqual(a,b)-断言a和b是否相等不相等则测试用例通过 assertTrue(x)-断言x是否True是True则测试通过 assertFalse(x)-断言x是否False是false则测试通过 assertIs(a,b)-断言a是否是b是则测试通过 assertNotIs(a,b)-断言a是否是b不是则测试通过 assertIn(a,b)-断言a是否在b中在b中则测试通过 assertNotIn(a,b)-断言a是否在b中在b中则测试通过
6最后使用HTMLTestRunner来生成测试报告分析运行结果 10.在python数据型中哪些可以切片处理呢
答python中符合序列的有序序列都支持切片例如列表字符串元组。 11.如果我要将一个12345678的字符串通过切片倒过来显示输出需要怎么弄
格式[start:end:step]
start:起始索引从0开始
end结束索引
step步长步长为正时从左向右取值。步长为负时反向取值
注切片取值是顾头不顾尾切片的步长默认为1不可为0
答 a’12345678’
print(a[: : -1]) 12.有大概统计过自己写个多少个自动化测试脚本吗
一般是功能测试模块的10%-30%
我们那个项目写的自动化测试脚本写的比较少我负责的模块写了50个
13.深拷贝以浅拷贝
一个对象有对象父级和对象子级中如果嵌套了其他类型
内部元素的type为number、str、tuple(不可变类型)类型的改变其中的值浅拷贝和深拷贝始终不变
内部元素的type为list、set、dict可变类型改变其中的值浅拷贝地址值会变深拷贝地址值不变
浅拷贝只会将父类复制到新的储存空间子类的地址值使用原对象子类的地址值
深拷贝会将父级和子级全部复制到对应的新的储存空间与原对象互不影响
14. setup 、teardown怎么用
setup和teardown是用来处理用例的开始前工作和结束后的工作
setup_moduleteardown_module模块级别的优先级最高
最先执行的前置或者后置且在整个 *.py 文件执行时只执行一次
setup_functionteardown_function不在类中
只对函数用例(不在class里面的)生效有多少条函数用例执行多少次
setup_classteardown_class类级
在类中运行的前置或者后置只运行一次
setup_methondteardown_methond方法级
在类中每条用例前后运行的前置或后置每条case分别运行一次
setup teardown 在类里面的
既可以在类中运行也可以在类外运行每条用例前后分别执行一次
15.怎么理解装饰器///装饰器的原理
装饰器本身是一个函数\方法它的入参和返回结果也是一个函数\方法。被标记的方法是装饰器的入参装饰器会对这个方法进行功能改造返回一个新的方法最后执行的就是这个新的方法。
16.测试固件测试夹具的作用域和使用方法
pytest.fixture(autouseTrue):声明固件时设置
pytest.fixture(autouseTrue):声明测试固件并在要使用固件的用例中以参数形式传入固件beanshell
pytest.fixture(autouseTrue):声明测试固件并对要使用固件的域用装饰器进行标记
pytest.mark.usefixtures(beanshell)
function: 函数级每个测试函数都会执行一次固件
class: 类级别每个测试类执行一次所有方法都可以使用
module: 模块级每个模块执行一次模块内函数和方法都可使用
session: 会话级一次测试只执行一次所有被找到的函数和方法都可用。
17.怎么做数据驱动
就是在测试的时候我们用的这些测试脚本和测试数据是分离管理的使用文件存放测试数据比如我经常使用的是excel然后封装好一个加载测试数据的方法在测试脚本中调用该方法获取测试数据并对需要做数据驱动的测试方法用pytest.mark.parametrize(婆ruai母翘以斯)进行装饰该测试方法就会在测试数据的驱动下重复执行有多少条测试数据该测试方法就执行多少次
1.定义用测试数据驱动测试方法的执行有多少条测试用例测试方法就执行多少次
2.对测试方法进行装饰pytest.mark.parametrize(data,testdata)
18.最常用的第三方库有哪些
1xlrd、xlwt 2pymysql 3requests 4pyyaml 5pytest 6allure-pytest
19. pytest装饰器
pytest装饰器
跳过不执行 pytest.mark.skip( )
有条件跳过 pytest.mark.skipif( )
标记测试方法为失败 pytest.mark.xfail( )
标记测试用例的执行顺序 pytest.mark.run(order3) 需要安装pip install pytest-ordering
对测试失败的用例进行重试一共重试3次每次间隔2秒 pytest.mark.flaky(reruns 3 , reruns_delay2)
需要安装pip instal
20.使用pytest生成测试报告
使用pytest生成测试报告
1安装测试报告所使用的第三方库pip install pytest html
2运行测试用例并生成测试报告pytest.main([-vs,./test_pytest_251.py,
--hum]../report/result.htmI])
21.使用allute生产测试报告
使用allute生成测试报告
pytest.main([--alluredir/report/allure_ison_-clean-alluredir/T)
1 -alluredir使用allure运行测试用例
2 ./ report/allureison定义运行结果数据存储的位置json格式的结果
3. -clean-alluredir每次执行前先清除历史数据
4 ./运行当前文件所在路径下的所有测试模块
os.system (allure generate report/ allure_json -o report/allure_report --clean
- 将json格式的结果数组装成html格式
22.常见的异常
NameError
IndexEttor下标越
TypeError
ValueError
KeyError
ZeroDivisionError: 被除数为0
异常从高到低 OFF. FATAL. ERROR, WARN, INFO, DEBUG. TRACE, ALL
23.方法与函数的区别
1. 方法是写在类里面的函数函数是直接写在python模块里面的 2. 方法只能被类的对象调用函数可以被导入到其他任意模块无条件的调用 3. 方法的第一参数要写self 《赛额复》 4. 私有方法只能在当前类中被调用类的对象无法调用
24.继承
一个类继承另一个类的属性和方法子类的实例可以访问父类的属性和方法
25.方法重写方法覆盖
如果从父类继承的方法不能满足子类的需求可以对其进行改写。这个过程叫方法的覆盖override也称之为方法的重写子类的实例调用该方法时调用的是重写之后的方法父类的实例调用这个方法时调用的是原方法多个父类有同名方法时继承时写在前面的父类的方法的优先级高
26.xlrd
Path”../路径“ filexlrd.open_ workbook(path) 创建文件对象 sheets file.sheet_names0 茯取该文件的所有sheet以列表返回 sheet1file.sheet_by_index(0通过下标选取要读取的sheet sheet2file.sheet_by_name(name)通过名称选取要读取的sheet name sheet.name 获取sheet的名宇 nrowsheet1.nrows 获取当前sheet的总行数 ncolsheet1.ncols #获取当前sheet的总列数 data_rowsheet1.row_values(rowx, start_colx0,end_colxNone)读取某一行 data_colsheet1.col_values(colx, start_rowx0, cnd_ rowxNone读取某一列 data_cell sheet1.cell_value(×, y). value读取某一个单元格的值
27.pymysql
conn pymysgl.connect(host,user,password,database)获取连接对象 cursor conn.cursor( ) 创建游标 cursor.execute(sql) 执行sql cursor.fetchone( ) 获取查询结果的一条数据 cursor.fetchall( ) 获取所有查询结果 conn.commit( ) 提交增删改之后都妥提交 cursor.close( ) 关闭游标 conn .close( ) 关闭连接 conn .rollback( ) 发生错误时回滚
先关闭游标再关闭连接
28.pytest
文件名以test_*.py或*_test.py
类要以Test开头不能包含_init_方法
以test开头的方法
如果类不以Test开头类中的方法即使是以test开头也不会执行
运行该模块下所有的测试用的
pytest.main([./ test pytest_01.py])运行指定模块
-s-v-g 命令参数
运行指定模块
-V是详细信息模式输出更详细的执行用例信息
pytest.main([-s, ./ test_ pytest_ 01-Py])
运行指定模块-q是静默模式只显示运行结果
pytest.main([‘-q,./test_pytest_01.py])
运行指定模块
#-s是显示用例中的打印信息和日志信息
Pytest.main([-s,./test_pytest_01.py])
29.测试夹具
fixture概念和作用
1 fixture是pytest 用于在测试前后进行预备、清理工作的代码处理机制。
2fixture优势
fixrure相对于unittest中的setup和teardown来说有以下几点优势
1. fixure命名更加灵活局限性比较小;
2. conftest.py 配置里面可以实现数据共享不需要import就能自动找到一些配置
3. scope”session”可以实现多个py跨文件使用一个session来完成多个用例。
Fixture是pytest精髓所在就像unittest中的setup和teardown一样但相对之下它的功能更加强大和灵活。
详解试前后的初始化设置如测试数据准备链接数据库打开浏览器等这些操作都可以使用fixture来实现
2.测试用例的前置条件可以使用fixture实现
3.支持经典的xunit fixture 像unittest使用的setup和teardown
4.fixture可以实现unittest不能实现的功能比如unittest中的测试用例和测试用例之间是无法传递参数和数据的
但是fixture却可以解决这个问题
不需要会用return返回初始化浏览器return后面的后置条件不会执行因此需要将return改成yield后置条件就会被调用执行。
Yield是Python中的一个关键字表示生成器。测试夹具的前置条件遇到yield时返回一个结果然后将测试夹具挂起
转而去执行测试用例最后回来测试夹具中执行后置条件。Return和yield后面可以不写任何返回值
表示空没有数据返回
30.常见的配置文件的格式
yaml文件.properties文件扑扑替斯.ini文件.json文件.xml文件
31.sql注入
就是通过把SQL命令插入到Web表单递交或页面请求的查询字符串最终达到欺骗服务器执行恶意的SQL命令
防止SQL注入的方法和理念
1永远不要信任用户的输入
2永远不要使用动态拼装SQL
3不要使用管理员权限
4密码要加密
32. log是什么log的级别log的作用
og是什么是详细的记录程序运行过程的文件
log的级别error爱柔错误warn物嗯警告 info信息debug调试
log的作用方便找到BUG Log.v 的调试颜色为黑色的 Log.d的输出颜色是蓝色的 Log.i的输出为绿色
Log.w的意思为橙色 Log.e为红色可以想到error错误
33. pytest框架下文件、类、方法的命名规范
文件名以test_.py开头
以Test开头的类不能包含__int__方法
以小写的test开头的方法
如果类不以Test开头的类即使类里面的方法是test开头也不会执行默认的是这样可以自定义更改
34.最常见的断言
assert ; ; ;
is True; is not True ;
is Flase ; is not Flase ;
in ; not in ;
35.用过哪些装饰器pytestallure
Plaintext
allure.severity(blocker)
allure.epic爱呸克(总描述)
allure.feature(费切)(测试模块描述)
allure.story斯刀锐(测试描述)
allure.parent_suite拍润特斯锐迟(上海车进科技信息有限公司-Demo1)
allure.suite斯锐迟(上海车进-注册登录)
allure.sub_suite(登录)
allure.description第斯克瑞斯(描述内容的意思)
allure.title抬头(用例名称)
allure.severity斯歪瑞情(blocker)用例等级
等级severity_level介绍 blocker阻塞缺陷功能未实现无法下一步 critical严重缺陷功能点缺失
normal一般缺陷边界情况格式错误 minor次要缺陷界面错误与ui需求不符 trivial轻微缺陷必须项无提示或者提示不规范
36.如何生成测试报告
pytest自带的测试报告不够优美我们使用allure生成最终的测试报告
37.自动化测试框架的搭建
a. 简历: 基于python pytest request allure 编写接口自动化脚本
b. 安装pytest、request、allure
c. 配置配置文件log配置文件,环境配置文件、数据库配置文件
d. 封装工具类和方法http请求的工具类、数据库操作的工具类、测试数据读取的工具类……
e. 对业务中常用的一些操作进行封装
f. 开发测试脚本
g. 组装测试套件suit,生成allure测试报告
38.python的定位方式
答有八种分别是by.idby.nameby.class nameby.tag nameby.link textby.partial link textby.xpathby.css selector。我常用的有idnameclass namelink textxpath。