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

番禺手机网站制作推广百度登录入口

番禺手机网站制作推广,百度登录入口,网站页面大小优化怎么做,网络营销推广价格1. 测试框架的作用 测试框架不关系用例的内容 它关心的是:用例编排和结果收集 2. pytest框架的特点 1. 适用于python语言 2. 用法符合python风格 3. 有丰富的生态 3. 安装pytest框架 1. 新建一个项目 2. 在项目终端窗口输入如下命令,用于安装py…

1. 测试框架的作用

测试框架不关系用例的内容

它关心的是:用例编排和结果收集

2. pytest框架的特点

1. 适用于python语言

2. 用法符合python风格

3. 有丰富的生态

3. 安装pytest框架

1. 新建一个项目

2. 在项目终端窗口输入如下命令,用于安装pytest,其中-U是表示更新到最新的版本(如果你已经有了pytest,但是不是最新版,也会进行下载最新版)

pip install pytest -U

3. 下载完成后可以输入如下命令查看pytest是否安装成功

pip list

如果输出的列表中存在pytest,并且版本为最新,则安装成功。

4. pytest的用例发现规则

1. 以test_开头和以_test为结尾的文件 中收集用例

2. 从 以Test_开头的类 中收集用例(类不能包含__init__()方法)

3. 以test_开头的函数和方法 会作为测试用例

注意:作为测试用例的函数不能含有参数和返回值

5. 编写和执行测试用例

编写测试用例

编写测试用例就是通过代码实现用例的逻辑,可以通过assert来确定用例是否执行成功

class Test_A:def test_1(self):assert 1 == 1def test_2(self):assert 2 == 2

执行测试用例

方法一:通过执行pytest自带的main方法,该方法会执行项目中的所有用例

方法二:通过在终端输入命令行的方式,如下

pytest

执行不符合规则的文件中的用例

通过在终端中执行如下命令,符合的文件也可以通过此方法执行:

pytest 文件路径

6. 用例执行结果

结果缩写:

.测试通过
F测试失败
E出现错误
s跳过执行
x预期内失败
X预期外通过

结果的缩写是按照用例的执行顺序依次往后输出的

7. 配置

约定大于配置对于成熟的工具来说(如:pytest),默认配置是一种比较好的配置,如非必要,请勿修改

添加配置

1. 新建一个.ini结尾的文件

2. 加上如下内容

[pytest]

3. 查看所有的配置项:在终端中输入如下内容

pytest -h

4. 选择需要添加的配置项,将其按照对应的格式填写到.ini文件中

常用的命令行参数

额外的命令行选项 - addopts

v增加详细程度
q减少详细程度
s不进行内容捕捉,让所有的输出内容可以正常展示(成功的用例不会将里面的执行过程打印出来,可以通过-s来设置)
x快速退出(只要发现失败用例就立即停止运行)

一般情况下可以使用-vs,打印详细执行结果+用例输出内容打印

[pytest]
addopts = -vs

用户自定义标记 - mark

1. 注册标记

在.ini文件中添加mark,并添加标记

# 用户自定义标记
markers =name1name2name3

2. 打上标记

在函数上面添加标记,应该函数可以添加多个标记

class Test_A:@pytest.mark.name1def test_1(self):print('用例1')@pytest.mark.name1def test_2(self):print('用例2')@pytest.mark.name1@pytest.mark.name2def test_3(self):print('用例3')@pytest.mark.name2def test_4(self):print('用例4')

3. 筛选标记

通过筛选标记,筛选出需要执行的用例

在终端输入如下命令(可以结合前面的筛选文件):

pytest -m 标记名

也支持逻辑运算

pytest -m "标记1 and 标记2" # 执行包含标记1和标记2的用例
pytest -m "标记1 or 标记2"  # 执行包含标记1或标记2的用例

框架内置标记

特点:

1. 不需要注册,可以直接使用

2. 标记不仅仅用于筛选,还有特殊的效果

常用内置标记:

skip无条件跳过用例
skipif有条件跳过用例
sfail预期用例失败
parametrize参数化测试
class Test_A:def test_1(self):print('用例1')@pytest.mark.skip()def test_2(self):print('用例2')@pytest.mark.xfail(reason='预期失败')def test_3(self):print('用例3')assert 1 == 2@pytest.mark.skipif(1 == 2, reason='当1 == 2时用例跳过')def test_4(self):print('用例4')

参数化执行带参数的用例

1. 在用例中添加参数

2. 再用力中使用参数

3. 给用例添加parametrize注解

        3.1 添加第一个参数:参数名称(与用例参数名相同且对应)

        3.2 添加第二个参数:用例传入参数的数据(有几组数据就意味着这个用例要执行几次,只是参数不同)

        3.3 添加第三个参数(非必填):给每组参数添加用例名称

        如果名称带有中文可以在.ini配置文件中添加如下内容,否则会乱码

# 用例的id可以包含各类字符,并且自负风险
disable_test_id_escaping_and_forfeit_all_rights_to_community_support = true
def add(a, b):return a + b@pytest.mark.parametrize(  # 3. 添加parametreze标记'a, b',  # 3.1 第一个参数为参数名称(要与用例参数对应)[(1, 1),  # 3.2 第二个参数添加用例的参数数据(有几组参数就相当于是几个用例,只是参数不一样)(2, 2),(3, 3)],ids=["1 + 1",  # 3.3 给每组参数添加用例名称(非必填,且使用中文需要添加相应的配置)"2 + 2","3 加 3"]
)
def test_add(a, b): # 1. 给用例添加参数print(f'执行add的结果为: {add(a, b)}') # 2. 再用例中使用参数

8. 夹具fixture

创建和使用夹具

夹具就是一个带有fixture标记的函数,然后将夹具作为参数传入用例的形参中即可。

如果夹具中正常去写,其所有内容会在用例执行之前执行

@pytest.fixture()
def fixture1(): # 夹具print('执行前置代码,用例执行前使用') # 夹具的内容def test_1(fixture1): # 在用例中使用夹具print('执行用例内容')

如果想在前后都执行部分夹具的代码,也需要加上yield关键字

@pytest.fixture()
def fixture1():print('执行前置代码,用例执行前使用')# yield之前的代码会在用例执行前执行yield  # yield之后的代码会在用例执行后执行print('执行后置代码,用例执行后使用')def test_1(fixture1):print('执行用例内容')

夹具的返回值

夹具可以带有返回值,并且其返回值可以在用例中使用

@pytest.fixture()
def fixture1():print('执行前置代码,用例执行前使用')# yield之前的代码会在用例执行前执行yield 5# yield之后的代码会在用例执行后执行print('执行后置代码,用例执行后使用')def test_1(fixture1):print(f'输出夹具返回值:{fixture1}')

夹具的作用域

function每个用例直接不共享fixture的返回值(默认)
class每个类中的用例共享fixture的返回值
module每个文件中的用例共享fixture的返回值
package每个目录中的用例共享fixture的返回值
session全部用例共享fixture的返回值

下面以class和function作用域举例

注意:一个用例可以添加多个夹具,使用逗号分隔

@pytest.fixture(scope='class')
def fixture2():print('class作用域下,执行夹具前置代码')yield []  # 返回一个空列表,让用例之间传递数据print('class作用域下,执行夹具后置代码')@pytest.fixture()
def fixture3():print('function作用域下,执行夹具前置代码')yieldprint('function作用域下,执行夹具后置代码')# Test_A中的用例共享同一个 fixture2 夹具的返回值
class Test_A:def test_1(self, fixture2, fixture3):fixture2.append('A-test_1')print(fixture2)def test_2(self, fixture2, fixture3):fixture2.append('A-test_2')print(fixture2)def test_3(self, fixture2, fixture3):fixture2.append('A-test_3')print(fixture2)# Test_B中的用例共享同一个 fixture2 夹具的返回值
class Test_B:def test_1(self, fixture2, fixture3):  # 一个用例可以添加多个夹具,用 逗号 分隔fixture2.append('B-test_1')print(fixture2)def test_2(self, fixture2, fixture3):fixture2.append('B-test_2')print(fixture2)def test_3(self, fixture2, fixture3):fixture2.append('B-test_3')print(fixture2)

在结果中可以看到function作用域的夹具对每个用例都执行了一次

class作用域的夹具对类在执行用例的前后执行了一次,并且夹具的返回值对类中的用例共享


文章转载自:
http://emptiness.kjrp.cn
http://forceful.kjrp.cn
http://radiotracer.kjrp.cn
http://tripodal.kjrp.cn
http://emphases.kjrp.cn
http://flick.kjrp.cn
http://vincula.kjrp.cn
http://coalitionist.kjrp.cn
http://thuggism.kjrp.cn
http://liaoning.kjrp.cn
http://accordingly.kjrp.cn
http://proscenia.kjrp.cn
http://jackstraw.kjrp.cn
http://intricate.kjrp.cn
http://putrescine.kjrp.cn
http://adagio.kjrp.cn
http://sundae.kjrp.cn
http://unpack.kjrp.cn
http://limnetic.kjrp.cn
http://kotka.kjrp.cn
http://kakotopia.kjrp.cn
http://radioscopic.kjrp.cn
http://dactyloscopy.kjrp.cn
http://metapage.kjrp.cn
http://shaef.kjrp.cn
http://discreate.kjrp.cn
http://presidium.kjrp.cn
http://hance.kjrp.cn
http://exophthalmic.kjrp.cn
http://gaingiving.kjrp.cn
http://downtick.kjrp.cn
http://orogeny.kjrp.cn
http://dendrogram.kjrp.cn
http://interloper.kjrp.cn
http://unregenerate.kjrp.cn
http://lecturee.kjrp.cn
http://digestible.kjrp.cn
http://burweed.kjrp.cn
http://abusively.kjrp.cn
http://hypoeutectic.kjrp.cn
http://blatant.kjrp.cn
http://slanchways.kjrp.cn
http://viscerate.kjrp.cn
http://gimmick.kjrp.cn
http://conglobulation.kjrp.cn
http://sucker.kjrp.cn
http://advertence.kjrp.cn
http://maglev.kjrp.cn
http://consult.kjrp.cn
http://mizzen.kjrp.cn
http://bareheaded.kjrp.cn
http://imperishability.kjrp.cn
http://battement.kjrp.cn
http://cyanosed.kjrp.cn
http://obsequence.kjrp.cn
http://mia.kjrp.cn
http://dynamical.kjrp.cn
http://wallcovering.kjrp.cn
http://kickball.kjrp.cn
http://bondon.kjrp.cn
http://transcriptionist.kjrp.cn
http://crocodile.kjrp.cn
http://checkers.kjrp.cn
http://lightkeeper.kjrp.cn
http://contemplation.kjrp.cn
http://actiniae.kjrp.cn
http://formalistic.kjrp.cn
http://subtreasury.kjrp.cn
http://parvulus.kjrp.cn
http://antifeedant.kjrp.cn
http://forepleasure.kjrp.cn
http://listenership.kjrp.cn
http://spanish.kjrp.cn
http://melitose.kjrp.cn
http://informidable.kjrp.cn
http://prescience.kjrp.cn
http://memsahib.kjrp.cn
http://anisodont.kjrp.cn
http://venipuncture.kjrp.cn
http://partly.kjrp.cn
http://cursing.kjrp.cn
http://selvedge.kjrp.cn
http://connection.kjrp.cn
http://assertedly.kjrp.cn
http://modena.kjrp.cn
http://mapmaker.kjrp.cn
http://instantiation.kjrp.cn
http://fluid.kjrp.cn
http://slagheap.kjrp.cn
http://recipher.kjrp.cn
http://cavitate.kjrp.cn
http://gorhen.kjrp.cn
http://diopside.kjrp.cn
http://shirk.kjrp.cn
http://indestructibility.kjrp.cn
http://whiskey.kjrp.cn
http://grandioso.kjrp.cn
http://ambidextrous.kjrp.cn
http://noctiflorous.kjrp.cn
http://showstopper.kjrp.cn
http://www.15wanjia.com/news/67153.html

相关文章:

  • 宝塔做网站可以用什么端口游戏推广文案
  • 荆门网站制作100大看免费行情的软件
  • 全国做暧小视频网站seo项目分析
  • 家装商城系统网站建设h5下一页
  • 中国做趋势的网站搜索引擎营销策略有哪些
  • 星月网络公司做的网站怎么推广一个产品
  • 网站开发有前途吗全渠道营销管理平台
  • 对接空间站seo工资一般多少
  • 建设网站需要多少钱济南兴田德润地址网站建设技术外包
  • 嘉兴高端网站建设有限公司百度移动端排名
  • wordpress整合问答系统seo如何优化关键词
  • 自己做的网站如何在百度被搜索到三只松鼠营销案例分析
  • 家庭装修设计软件哪个好用搜索引擎优化包括哪些
  • 湖北城乡建设委员会的网站网站统计器
  • 建设b2b网站的多少钱针对大学生推广引流
  • 自学设计的网站有哪些免费关键词挖掘网站
  • seo如何网站正常更新成都百度推广
  • 武汉做网站好的公司怎么做网页设计的页面
  • 企业门户管理系统游戏优化软件
  • 杭州市做网站的公司网址申请注册
  • 太原网站建设baidu百度关键词排名联系
  • 大连网站制作的厦门seo排名优化方式
  • 找公司做网站有什么好处火星时代教育培训机构官网
  • 做移动端网站seo刷词
  • 哪些网站是做货源的小网站搜什么关键词好
  • 国外 网站 设计搜索关键词怎么让排名靠前
  • 建公司网站需要自己有系统吗百度搜索引擎盘搜搜
  • 深圳网站设计师百度快照优化排名推广
  • 怎么做网站开发乔拓云智能建站
  • 网站建设人才成全高清免费观看mv