
Python
文章平均质量分 51
永远不要矫情
这个作者很懒,什么都没留下…
展开
-
python参数:*和**
python支持函数从调用语句中收集任意数量的实参。在形参前可使用*和**。1.*符号例如:我们创建fruit函数的时候指定形参toppings前加*。def fruit(*toppings):print(toppings)那我们在调用上面函数时,就可以穿任意多的参数。例如:fruit("banana")fruit("apple","orange")输出如下所示:('banana',)('apple', 'orange')形参名*toppings 中的星号让Python创建一原创 2021-06-02 19:49:54 · 513 阅读 · 0 评论 -
POM设计模式简介
1.POM设计模式POM(Page Object Model):页面对象模型,是一种设计模式,用来管理维护一组web元素集的对象库。使用POM设计模式最终的目的是为了程序松耦合。在POM下,应用程序的每一个页面都有一个对应的page class每个page class都维护着该web页面的元素集和操作这些元素的方法例如,我们访问百度,在百度的搜索框里搜索selenium,在不使用pom时,代码如下:from selenium import webdriverimport unittest原创 2021-05-27 22:21:46 · 8823 阅读 · 2 评论 -
python的DDT模块
ddt是python的第三库,全名称为:Data-Driven/Decorated Tests。ddt模块提供了创建数据驱动的测试。使用步骤如下:1.安装ddt模块2.使用@ddt,@data,@unpack,@file_data加载数据1.安装ddt模块安装命令如下:pip install ddt2.DDT加载数据代码如下:import osfrom ddt import ddt, data, unpack, file_dataimport unittestdef get_原创 2021-05-25 22:01:17 · 2880 阅读 · 0 评论 -
pytest参数化实现DDT:读取数据库数据
在这篇文章里,主要以mysql数据库为例。读取mysql数据库的数据主要分为三步:1.安装mysqlclient模块2.获得数据库连接3.查询数据1.安装mysqlclient模块命令如下:pip install mysqlclient2.获取数据,实现DDT代码如下:import MySQLdbimport pytestconn = MySQLdb.connect( #获取一个conn user='root', passwd='123456', hos原创 2021-05-25 21:38:42 · 1291 阅读 · 0 评论 -
pytest参数化实现DDT:读取excel文件
读取excel文件:首先安装xlrd:使用命令pip install xlrd==1.2.0在使用时,导入xlrdxlrd.open_workbook(filename)方法打开一个excel文件,获取到一个工作簿对象wbwb.sheet_by_index()获取sheet对象,通过索引的方法,即索引0代表sheet1sheet.nrows和sheet.ncols获取行和列使用for循环获取数据import pytestimport xlrddef get_data(): f原创 2021-05-24 21:57:36 · 1225 阅读 · 1 评论 -
pytest参数化实现DDT:读取JSON数据
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。与上一篇文章类似,使用pytest中的pytest.mark.parametrize()便可实现参数化。代码如下所示:导入json模块,使用json.load()方法加载json文件。import pytestimport jsondef get_data(): with open('test.json') as f: lst = [] data原创 2021-05-24 21:24:49 · 1710 阅读 · 0 评论 -
pytest参数化实现DDT:读取CSV数据
1.DDT思想DDT(Data-Drive test):将测试数据提取出来,与逻辑分离,通过参数传递不同的测试数据来驱动用例运行。pytest中的pytest.mark.parametrize()便可实现参数化。2.csv文件csv:逗号分隔的文本文件,其文件以纯文本形式存储表格数据。当然分隔符也不一定是逗号,最常见的是逗号或制表符。例如:一个命名为test.csv的文件中的数据如下所示:a,b,c1,2,33,4,53.读取csv数据,实现DDT创建test_csv.py,代码如下:i原创 2021-05-24 21:12:10 · 2083 阅读 · 0 评论 -
python模块中__init__.py的作用
基本概念先上结论举例解释 实验一:不包含__init__.py实验二:A中包含__init__.py实验三:A.A_A中也包含__init__.py 进阶 基本概念 概念解释import即导入,方式就是在import位置将代码文件拷贝过去。模块python中一个.py文件就是一个模块包指软件包,举例import matplotlib.pyplot中(其中pyplot非函数,至少是一个模块或者包),matplotlib就是一个软件包。 先上结论 __init__.py的作用是让一个...转载 2021-05-23 23:52:57 · 834 阅读 · 0 评论 -
pytest不同目录下执行相同名的py文件报错
在项目中创建一个dep1目录,该目录下又有两个目录,如下所示:在dep1目录下执行pytest -sv命令,报错如下:D:\pythonProject\dependency\dep1>pytest -sv======================================================================== test session starts ======================================================原创 2021-05-23 23:46:45 · 2337 阅读 · 0 评论 -
解决pytest.mark.dependency的scope为package报AttributeError: ‘NoneType‘ object has no attribute..
在上一篇文章中,我们执行scope='package’时报如下错:D:\pythonProject\dependency\dep\dep2>pytest -sv======================================================================== test session starts ========================================================================platf原创 2021-05-23 23:34:54 · 704 阅读 · 0 评论 -
pytest.mark.dependency用例依赖
这是一个pytest第三方插件,主要解决用例之间的依赖关系。如果依赖的上下文失败后续的用例会被标识为跳过执行,相当于执行了pytest.mark.skip。1.安装安装命令如下:pip install pytest-dependency执行上述命令后,再执行pip install pytest-dependency,能找到该组件即可2.基本用法第一步:需要在用例开始位置写上@pytest.mark.dependency(),代表这条用例作为主条件,如果这条用例失败,关联它的用例会跳过执行。原创 2021-05-23 22:42:48 · 5496 阅读 · 8 评论 -
python pass语句
Python pass 是空语句,是为了保持程序结构或者语义的完整性。python中的boolean的值第一个字母需要大写。例如:def test02(): if(False): print('true') else: passtest02()输出:原创 2021-05-23 20:32:06 · 170 阅读 · 0 评论 -
Python之if __name__ == ‘__main__‘:的作用和原理
if __name__ == '__main__':的作用 一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import 到其他的 python 脚本中被调用(模块重用)执行。因此 if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程,在 if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本直...转载 2021-01-28 15:22:31 · 103 阅读 · 1 评论 -
logging模块的四大组件
1.四大组件四大组件包括:Logger,Handler,Filter和Formatter。2.Logger类的相关方法logger类的主要方法如下:3.Handler类Handler对象的作用是基于日志消息的level,将消息分发到handler指定的位置,例如文件,网络等。常用的方法如下所示:handler的相关子类如下所示:代码如下:会在同目录下生成一个all.log文件import loggingimport logging.handlersimport datetime原创 2021-05-23 11:16:31 · 412 阅读 · 0 评论 -
pytest日志输出格式
1.basicConfig函数通过上一篇可知,我们可以通过logging.basicConfig对日志输出的级别进行控制,下面详细介绍该函数的参数。2.logging模块的格式字符串我们对上一篇的代码进行修改,将日志信息不直接打印在控制台,且输出日志打印时间,模块名称,以及行号等。import loggingmy_format = '%(asctime)s-%(filename)s-%(module)s-%(lineno)d'logging.basicConfig( filen原创 2021-05-23 10:53:57 · 898 阅读 · 0 评论 -
pytest 日志模块的简单介绍
1.日志的作用在程序中,日志主要的作用有:程序调试了解程序运行是否正常故障分析与问题定位用户行为分析2.日志的等级主要分为5种:DEBUG:最详细的日志信息info:仅次于DEBUG,通常是只记录关键节点信息、WARNING:当某些不期望的事情发生时记录的信息,但是此时应用程序还是能正常运行ERROR:由于一个严重的问题导致某些功能不能正常运行时记录的信息CRITICAL:当发生严重错误,导致应用程序不能继续运行时记录的信息代码如下:import logginglog原创 2021-05-23 10:31:59 · 1688 阅读 · 0 评论 -
pytest allure的简单介绍
allure一款测试报告框架,具有以下几个特点allure是一个轻量级,灵活的,支持多语言的测试报告工具;java语言开发的,支持pytest,PHP等;可以提供详细的测试报告,测试步骤,log;可以集成到Jenkins1.安装使用pip命令安装pip install allure-pytest使用pip list查看是否有该组件我们使用的windows环境安装,同时我们下载一个allure-2.7.0.zip的文件,将其bin目录配置到环境变量Path中,例如:在cmd中输入a原创 2021-05-22 22:57:46 · 879 阅读 · 5 评论 -
pytest的fixture
fixture的作用类似于setup/teardown。fixture命名不以test开头,用于区分用例。在函数前使用装饰器@pytest.fixture(),括号中有个scope的参数,用于控制fixture的范围。默认取值为function,控制范围的排序为:session > module > class > function。取值范围如下所示:代码如下:定义了一个init方法,作为参数传入test_1和test_02函数,在test_1函数中对init的返回值做了断言im原创 2021-05-22 21:07:01 · 232 阅读 · 0 评论 -
pytest的参数化处理
在pytest中,可以使用参数化测试,即每组参数都独立执行一次测试。使用的是:pytest.mark.parametrize(argnames,argvalues).传入的数据格式可以是:列表元祖字典1.列表代码如下:test_01函数会执行两次,因为列表中有两个值。import pytest# 列表data = ['123', '456']@pytest.mark.parametrize('pwd', data)def test_01(pwd): print(pwd)原创 2021-05-22 20:45:01 · 624 阅读 · 0 评论 -
pytest的setup和teardown
在unittest中就有setup和teardown,pytest也不例外。主要有五种:模块级(setup_module/teardown_module),开始于模块始末,全局的函数级(setup_function/teardown_function),只对函数用例生效(不在类中)类级(setup_class/teardown_class),只在类中前后运行一次(在类中)方法级(setup_method/teardown_method),开始于方法前后(在类中)setup/teardown运行在原创 2021-05-22 08:18:12 · 507 阅读 · 0 评论 -
pytest的测试用例标记
在pytest中,有时候我们并不需要对所有的用例全部执行。pytest提供了一种机制:有选择的挑选用例去执行,即标记测试函数。下面详细介绍几种方法给函数标记。1.使用pytest.mark在函数上进行标记1.1 标记格式“@”表示这是一个装饰器,“pytest.mark”是pytest固定的写法,mark_name可以使用自定义标记和内置标记。@pytest.mark.mark_name1.2 内置标记常用的内置标记如下:例如:import pytestdef test01():原创 2021-05-22 07:28:53 · 1883 阅读 · 1 评论 -
pytest框架简单介绍
pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:简单灵活,容易上手,文档丰富;支持参数化,可以细粒度地控制要测试的测试用例;能够支持简单的单元测试和复杂的功能测试,还可以用selenium/appnium等自动化测试、接口自动化测试(pytest+requests)具有很多第三方插件,并且可以自定义扩展,比如pytest-selenium,pytest-html等测试用例的skip和xfail处理可以很好的和CLI工具结合,例如Jenkins1.pytest安原创 2021-05-21 22:24:44 · 1320 阅读 · 1 评论 -
python之unittest测试框架
unittest:python的单元测试框架,类似于java的Junit。unittest有5个很重要的组件:test fixture,test case,test suite,test runner,test loader。test case:一个TestCase的实例就是一个测试用例,测试用例就是一个完整的测试流程,包括测试前准备环境的搭建,执行测试代码,以及测试后环境的还原。test suite:多个测试用例集合在一起便是TestSuite。test runner:执行测试用例。执行TestS原创 2021-05-21 09:00:45 · 342 阅读 · 0 评论 -
python元组的基本用法
Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。例如:testtuple= ("apple", "banana", "cherry")print(testtuple)1.访问元组元素与列表相同,索引从0开始。也可以使用负索引,-1 表示最后一个元素,-2 表示倒数第二个元素,依此类推。testtuple= ("apple", "banana", "cherry")print(testtup原创 2021-05-19 20:36:23 · 414 阅读 · 0 评论 -
python列表的基本用法
列表是最常用的Python数据类型,创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。列表的数据项不需要具有相同的类型。例如:list1 = ['physics', 'chemistry', 1997, 2000]1.访问列表中的值使用下标索引来访问列表中的值,列表索引从0开始。例如:list1 = ['physics', 'chemistry', 1997, 2000]list2 = [1, 2, 3, 4, 5, 6, 7]print("list1[0]: ", list原创 2021-05-19 20:35:27 · 397 阅读 · 1 评论 -
python在元组,列表和字典变量前加*的作用
在python基础学习中可能遗漏这一点,现在补上; 在一个列表、元组或字典变量前加*,结果如下 可以发现,在列表前加*号,会将列表拆分成一个一个的独立元素,不光是列表、元组、字典,由numpy生成的向量也可以拆分; 那这些又有什么用呢?了解过函数中*args和**kwargs的人应该知道,这两个形参都接收若干个参数,通常我们将其称为参数组; *args:接收若干个位置参数,转换成元组tuple形式*...转载 2021-05-19 19:47:11 · 1109 阅读 · 0 评论 -
python的魔法方法详解(带双下划线的方法)
魔法方法是python内置方法,不需要主动调用,存在的目的是为了给python的解释器进行调用,几乎每个魔法方法都有一个对应的内置函数,或者运算符,当我们对这个对象使用这些函数或者运算符时就会调用类中的对应魔法方法 魔法方法含义-基本的魔法方法__ new__(cls[, …])...转载 2021-05-19 15:29:49 · 298 阅读 · 0 评论 -
python的函数导入方法
我们可以将函数存储在被称为模块的独立文件中,模块是扩展名为.py的文件。若主程序需要用时,导入即可。import 语句允许在当前运行的程序文件中导入模块中的代码。导入模块的方法有很多种,下面简单介绍一下:1.导入整个模块首先定义一个test01.py文件,定义函数如下:test01.pydef person(name,age): print('my name is '+name+', my age is ' +age)在test01.py所在的目录中创建另一个名为test02.py的文原创 2021-05-18 22:52:40 · 15050 阅读 · 1 评论 -
python导入类
与上篇文章python导入函数一样,我们也可以在当前运行的程序文件中导入其他模块中的类。导入方法如下所示:1.导入单个类语法格式如下:from module_name import class_name创建car.py:class Car(): def __init__(self, make, model, year): self.make = make self.model = model self.year = year原创 2021-05-18 22:51:40 · 1481 阅读 · 0 评论 -
python的assert基本用法
Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。基本用法为:assert expression例如:在判断用户登录时,如果期望的结果与返回的结果相等时,继续执行下一条语句;如果不相等报错: expected = '验证码不正确' self.driver.find_element_by_name('username').send_keys(username) self.driver.find_element原创 2021-05-18 15:31:53 · 8206 阅读 · 0 评论