Python
CesareCheung
day by day
展开
-
allure定制测试报告,修改allure报告标题及logo
allure定制化测试报告原创 2022-08-25 10:00:56 · 2048 阅读 · 2 评论 -
运行pytest项目报 TypeError: required field “lineno“ missing from alias
运行pytest项目报 TypeError: required field "lineno" missing from alias原创 2022-07-25 15:36:30 · 2990 阅读 · 0 评论 -
Excel xlsx file; not supported报错
Excel xlsx file; not supported原创 2022-07-23 10:16:40 · 392 阅读 · 0 评论 -
Pytest默认的测试用例的规则及应用
1、模块名必须以test_开头或者是_test开头2、测试类必须以Test开头,并且不能带有init方法3、测试用例必须以test开头原创 2022-04-02 01:47:24 · 342 阅读 · 1 评论 -
Yaml文件语法规则详解
1、yaml是数据文件,保存的一个数据格式,支持注解,换行,裸字符串2、yaml用途:1)用于全局配置文件:环境,数据库信息,账号信息,日志格式,报告名称2)用于接口自动化中一些复杂的多接口串联3)用于编写接口测试用例3、yaml语法规则1)区分大小写2)和python一样也是通过缩进的方式来表示层级关系(只能用空格来缩进)3)和缩进多少层无关,只和左边是否对齐有关系4)#表示注释4、yaml数组组成举例1)map对象:键(空格)值2)数组(列表):用一组横线开头 -name: 测试原创 2022-04-01 22:30:37 · 1642 阅读 · 0 评论 -
生成allure测试报告
1、下载、解压、配置path路径2、加入命令生成json格式临时报告pytest.ini文件addopts=-vs --alluredir ./temp3、生成allure报告os.system('allure generate ./temp -o ./report --clean')原创 2022-04-01 21:37:16 · 336 阅读 · 0 评论 -
pytest中fixture的参数
@pytest.fixture(scope="",params="",autouse="",ids="",name="")1、scope:表示的是被@pytest.fixture标记的方法的作用域,function(默认),class,module,package/session2、params:参数化3、autouse:自动执行autouse=True,默认是False4、ids:当使用params参数化时,给每个值设置一个变量名,意义不是很大5、name:表示被@pytest.fixture原创 2022-04-01 02:00:40 · 330 阅读 · 0 评论 -
python执行报错“UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xa1 in position 110: ill
pytest.ini文件,在python执行时报错是由于pytest.ini文件编码格式不是gbk导致报错,需要修改原创 2022-03-31 23:31:20 · 961 阅读 · 0 评论 -
Pytest常用插件及参数用法
Pytest常用插件及参数用法常用插件 pytest pytest-html:生成测试报告 pytest -xdist:测试用例分布式执行 pytest-ordering:改变测试用例执行顺序 pytest-returnfailures :失败用例重跑 aullre-pytest:生成美观的测试报告使用规则 模块名必须以test_开头或者_test结尾 测试类必须以Test开头,并且不能有init方法 测试方法必须以test开头运行模式 主函数模式 命令行模式 读取pyte原创 2022-03-29 00:29:52 · 601 阅读 · 0 评论 -
chromdriver报错原因
在引用selenium过程中,安装chromdriver后报错 File "C:\python37\lib\site-packages\selenium\webdriver\common\service.py", line 76, in start stdin=PIPE) File "C:\python37\lib\subprocess.py", line 756, in __init__ restore_signals, start_new_session) File "C:\p原创 2022-03-22 19:55:27 · 590 阅读 · 0 评论 -
关于App自动化执行链接Appium服务包名正确但是报错An unknown server-side error occurred while processing the command
在执行链接Appuim服务时连接失败可能原因:连接失败如图![在这里插入图片描述](https://img-blog.csdnimg.cn/20190305134635369.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpb...原创 2019-03-05 13:54:23 · 62198 阅读 · 15 评论 -
‘allure‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
‘allure’ 不是内部或外部命令,也不是可运行的程序 或批处理文件 可能原因,及检查点:第一步,安装Python依赖库。两种方式任选其一,第一种在dos窗口中,输入下面三个命令:pip3 install pytestpip3 install allure-pythonpip3 install allure-python-commons第二种方法,打开Pycharm,点击File,点击Settings,选择project interpreter,点击右上角+加号按钮,搜索并选择pytest原创 2021-03-06 14:12:57 · 8508 阅读 · 5 评论 -
Python 中安装 requirements.txt 文件的使用
requirements.txt 的文件中列出项目的依赖项如:pytest==5.4.0allure-pytest==2.8.15allure-python-commons==2.8.15pytest-rerunfailures==9.0allure-python-commons==2.8.15configparser==5.0.0PyYAML==5.3.1requests==2.23.0requests-toolbelt==0.9.1simplejson==3.17.0ruamel原创 2021-03-06 10:56:56 · 1478 阅读 · 0 评论 -
python类属性,实例属性,类方法,实例方法,继承
第一部分:类属性class person: name = 'Xavier' __num = 20156307p = person() #生成实例对象Pprint(p.name) #正确,不提倡,这样会造成类属性值不一样, # 因为实例对象在类外可以更改属性值,eg第12行,但不影响类对象中的类属性14行print(person.name)person.age = 21 #通过类名在类外追加定义一个类属性,属于类对象,包括它的实例对象p.year转载 2020-07-19 21:16:15 · 398 阅读 · 0 评论 -
Python 中read()、readline()及readlines()对比
1、read() 每次读取整个文件,它通常将读取到底文件内容放到一个字符串变量中,也就是说 .read() 生成文件内容是一个字符串类型。2、readline()每只读取文件的一行,通常也是读取到的一行内容放到一个字符串变量中,返回str类型。3、readlines()每次按行读取整个文件内容,将读取到的内容放到一个列表中,返回list类型。...原创 2020-07-18 11:35:14 · 184 阅读 · 0 评论 -
python 对文件的序列化(json.dump())与反序列化(json.load())
文件序列化—>把服务端的响应数据写到文件中json.dump(r.content.decode("utf-8"), open("weather.json", "w"))文件的反序列化—>读取文件内容fp=json.load(open("weather.json", "r"))import jsonimport requests"""文件的序列化与反序列化"""r = requests.get(url="http://www.weather.com.cn/da.原创 2020-06-21 10:35:22 · 648 阅读 · 0 评论 -
python中的序列化(json.dumps())与反序列化(json.loads())
序列化:把python数据类型转化成str的类型的过程(dict—>str)反序列化:把str类型转化成python数据类型的数据结构(str—>dict)dict1 = { "code": "1", "msg": "供货厂商列表", "data": { "stores_id": 1, "stores_name": "厂商用户1" }}# 序列化: dict--->strdict_str = json.dumps(dict1)print(dict_s原创 2020-06-20 22:43:50 · 850 阅读 · 0 评论 -
python编程input与raw_input区别
input是一个输出语句,可以输出返回一个变量,根据实际情况会返回一个值,字符串或者是数值,然后,解释器会根据这个值来执行下面的代码,输入不同的值,会有不同的返回值,输出的结果或许就会不一样了,input与raw_input不同的地方就是要求输入的类型。工具/原料· python2.7, IDLE python GUI步骤/方法1、打开IDLE python GUI,从开始-所有程序-python2.7-IDLE python GUI,或转载 2020-06-01 18:15:51 · 190 阅读 · 0 评论 -
Python 自动化测试框架unittest与pytest的区别
引言前面一篇文章Python单元测试框架介绍已经介绍了python单元测试框架,大家平时经常使用的是unittest,因为它比较基础,并且可以进行二次开发,如果你的开发水平很高,集成开发自动化测试平台也是可以的。而这篇文章主要讲unittest与pytest的区别,pytest相对unittest而言,代码简洁,使用便捷灵活,并且插件很丰富。Unittest vs Pytest主要从用例编写规则、用例的前置和后置、参数化、断言、用例执行、失败重运行和报告这几个方面比较unittest和pytest的区转载 2020-05-17 11:55:43 · 7541 阅读 · 2 评论 -
python 中使用redis
用python操作redis需要先安装redis的python库,pip install redis,python提供了两种连接redis的方式,一种是直接连接r = redis.Redis(host='localhost', port= 6379)另一种方式是使用连接池pool = redis.ConnectionPool(host='localhost', port=6379)r =...原创 2020-04-02 17:52:43 · 175 阅读 · 0 评论 -
通过Pymsql链接数据库及对应的查询操作方法封装
import pymysql# python3用的是pymysql,python2用的是MySQLdbclass OperationMysql: """ 数据库SQL相关操作 """ def __init__(self): self.conn = pymysql.connect( host='127.0.0.1',...原创 2020-03-24 11:27:17 · 252 阅读 · 0 评论 -
通过修改User-Agent值达到浏览器伪装
浏览器伪装import urllib.requesturl = "https://blog.csdn.net/weixin_42760923"res = urllib.request.urlopen(url).read().decode("utf-8")# 头文件格式header=("User-Agent","具体用户代理值")headers = ("User-Agent", ...原创 2020-03-09 16:23:18 · 685 阅读 · 0 评论 -
Python匿名函数(lambda)
result = lambda [arg1 [, arg2, .....]]:expressionresult:用于调用lambda表达式[arg1 [, arg2, …]]:可选参数,用于传递参数expression:必选参数,用于指定一个实现具体功能的表达式。如果有参数,那么在该表达式中将应用这些参数。示例代码:常规写法:import math # 导入math模块...转载 2020-01-19 11:09:57 · 1150 阅读 · 0 评论 -
Python数据类型有哪些
1. 字符串(str):字符串是 Python 中最常用的数据类型。我们可以使用引号( ’ 或 " )来创建字符如:string="‘Hello World!’"2. 数字(number):Python 数字数据类型用于存储数值。数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。数字中又分为:整型(Int)、浮点型(float)、复数( (complex)...原创 2020-01-16 16:56:43 · 4457 阅读 · 0 评论 -
通过urllib简易爬取腾讯新闻内容方法封装
import urllib.requestimport redef get_new_qq(url, pat, file): data = urllib.request.urlopen(url).read().decode("gbk", "ignore").strip() res = re.compile(pat).findall(data) with open(fi...原创 2020-01-10 10:54:07 · 233 阅读 · 1 评论 -
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcc in position 53: invalid continuation byte报错
报UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xcc in position 53: invalid continuation byte错误解决方法# 在decode的第二个参数中加入“ignore”decode("utf-8","ignore")decode的函数原型是decode([encoding], [errors=‘...原创 2020-01-09 19:32:11 · 3423 阅读 · 0 评论 -
通过urllib.request爬取CSDN博主原创博客标题方法封装
正则表达式:pat = '<span class=".*">原创</span>(.*)</a>'import reimport urllib.requestdef get_csdn(url, pat, page): i = [] for page1 in range(1, int(page) + 1): new_ur...原创 2020-01-02 19:16:47 · 246 阅读 · 0 评论 -
Python正则表达式函数
正则表达式函数:正则表达式函数有:re.match()函数、re.search()函数、全局匹配函数、re.sub()函数match():从头开始匹配string = "Poythonpty"pat = "p.*?y"pat1 = "y.*"rst = re.match(pat, string, re.I)rst1 = re.match(pat1, string, re.I)pr...原创 2019-12-28 11:26:49 · 273 阅读 · 0 评论 -
Python正则表达式贪婪模式和懒惰模式
贪婪模式和懒惰模式:贪婪模式是尽可能多的匹配,懒惰模式是尽可能少的匹配string = "Poythony"pat1 = "p.*y" # 贪婪模式,比较模糊pat2 = "p.*?y" # 懒惰模式,比较精准# rst = re.search(pat, string)rst1 = re.search(pat1, string, re.I) # re.I:忽略大小写rst2 = ...原创 2019-12-28 11:18:48 · 875 阅读 · 0 评论 -
Python正则表达式
正则表达式一般可以有几种作为原子:1.普通字符作为原子pat = "yun"result = re.search(pat, string)print(result)2.非打印字符作为原子 : \n 换行符 \t 制表符string = """taobao.com baidu.com """pat = "\n"result = re.s...原创 2019-12-28 11:17:37 · 114 阅读 · 0 评论 -
python中urllib模块urlretrieve()、urlcleanup()、info()、getcode()、geturl()的用途
urlretrieve(网址,本地文件存储地址 ):直接下载网页到本地import urllib.requesturllib.request.urlretrieve("https://blog.csdn.net", "../CSDN.html")urlcleanup():清除缓存import urllib.requesturllib.request.urlcleanup...原创 2019-12-28 10:13:02 · 940 阅读 · 0 评论 -
Python获取Cookie或鉴权方法封装
通过urllib.request爬取网址信息,re正则表达式获取Cookie或Authorizationimport urllib.requestimport redef get_authorization(url, pat): """获取Cookie或鉴权""" try: file = urllib.request.urlopen(url, timeou...原创 2019-12-27 20:48:00 · 520 阅读 · 0 评论 -
爬虫出现TypeError: cannot use a string pattern on a bytes-like object报错
import urllib.requestimport redata = urllib.request.urlopen("https://edu.csdn.net/huiyiCourse/detail/253").read()pat = "<p>(\d*?)</p>"rst = re.compile(pat).findall(data)print(rst)爬虫...原创 2019-12-26 20:40:55 · 308 阅读 · 0 评论 -
python+requests+re匹配抓取猫眼上映电影信息
python+requests抓取猫眼中上映电影,re正则匹配获取对应电影的排名,图片地址,片名,主演及上映时间和评分import requestsimport re, jsondef get_html(url): """ 获取网页html源码 :return: """ user_agent = "Mozilla/5.0 (Windows NT 1...原创 2019-12-24 18:33:26 · 625 阅读 · 0 评论 -
Python正则表达式中re.S作用
re.S的作用:不使用re.S时,则只在每一行内进行匹配,如果存在一行没有,就换下一行重新开始,使用re.S参数以后,正则表达式会将这个字符串看做整体,在整体中进行匹配对比输出结果:import rea = """sdhellolsdlfsdfiooe:yy988989pythonafsf"""b = re.findall('hello(.*?)python',a)c = re.f...原创 2019-12-24 18:30:47 · 358 阅读 · 0 评论 -
Pycharm编辑器文字大小及颜色设置
第一步:选择 File下的 Setting第二步:选择 Editor-Font设置字体大小第三步:Editor-Color_Scheme-Python设置颜色原创 2019-12-17 09:51:12 · 992 阅读 · 0 评论 -
Python 获取MD5加密值
通过Python代码获取MD5加密值,代码实现如下:import hashlibdef get_md5(s): """获取MD5加密值 :param s: 需要加密的字符串 :return: 密文 """ if s: m = hashlib.md5() if s is str: m.updat...原创 2019-12-16 11:21:23 · 316 阅读 · 0 评论 -
Python接口自动化框架
整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport主要包含以下几个模块:1. Business:与业务相关的公共模块get_login_token:实时获取tokenfrom Business.url import url_loginimport requests, jsondef login_token(username=...原创 2019-12-12 11:38:39 · 3073 阅读 · 8 评论 -
UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 11126: illegal multibyte sequence
python运行出现报错如图:在打开文件时设置编码格式设置对应的编码格式,如:加上encoding=“utf-8”解决方法:with open(self.file_path,encoding="utf-8") as fp: data = json.load(fp) return data...原创 2019-11-13 15:02:12 · 247 阅读 · 0 评论 -
Pymysql的常见使用方法
cursor.fetchone()与cursor.fetchall()的区别:cursor.fetchone():只能显示一个数据cursor.fetchall():才能显示查出来的所有数据Pymsql的其他常用方法import pymysql#连接数据库db = pymysql.connect("localhost","admin","Cesare@qq","dbpymysql...原创 2019-11-12 11:57:41 · 1238 阅读 · 2 评论