
python-基础篇
python基础
api自动化
ui自动化
django
As。
嘿嘿,年龄越来越大了,脑袋不够用了,昨天还会的东西今天就忘记了,所有... 那就发记笔记多发博文吧。
展开
-
多任务-协程(02-生成器)
yield 生成器原创 2022-10-16 22:25:48 · 331 阅读 · 1 评论 -
多任务-协程(01-迭代器)
注意,当我们已经迭代完最后一个数据之后,再次调用next()函数会抛出StopIteration的异常,来告诉我们所有数据都已迭代完成,不用再执行next()函数了。原创 2022-10-16 16:40:34 · 350 阅读 · 0 评论 -
DeprecationWarning: Using or importing the ABCs from ‘collections‘ instead of from ‘collections.abc‘
报错原创 2022-10-16 15:35:18 · 715 阅读 · 0 评论 -
多任务-进程multiprocessing
1)如果block使用默认值,且没有设置timeout(单位秒),消息列队如果为空,此时程序将被阻塞(停在读取状态),直到从消息列队读到消息为止,如果设置了timeout,则会等待timeout秒,若还没读取到任何消息,则抛出"Queue.Empty"异常;当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。原创 2022-09-04 18:18:57 · 264 阅读 · 0 评论 -
多任务-线程-thread模块
而线程调度将自行选择一个线程执行。而创建自己的线程实例后,通过Thread类的start方法,可以启动该线程,交给python虚拟机进行调度,当该线程获得执行的机会时,就会调用run方法执行线程。如果此时另一个线程试图获得这个锁,该线程就会变为“blocked”状态,称为“阻塞”,直到拥有锁的线程调用锁的release()方法释放锁之后,锁进入“unlocked”状态。④.同理其他线程在对g_num进行修改时,都要先上锁,处理完后再解锁,在上锁的整个过程中不允许其他线程访问,就保证了数据的正确性。原创 2022-09-04 11:42:35 · 177 阅读 · 0 评论 -
python学习-飞机大战
一、pygame正确安装1.安装:pip install pygame2.验证安装:python -m pygame.examples.aliens;安装ok即会出现如下图所示动画二、使用pygame创建图像窗口1.游戏的初始化和退出;要使用pygame提供的所有功能之前,必须先调用init方法;在游戏结束,需要调用quit方法pygame.init()→游戏代码→pygame.quit()2.在游戏中,所有可见的元素都是以矩形区域来描述位置的;要描述一个矩形区域有4个要素(x,y(widt原创 2022-05-29 16:50:14 · 2373 阅读 · 0 评论 -
django.template.exceptions.TemplateDoesNotExist报错解决方法
报错信息如下:在setting.py里面改下TMPLATES中的DIRS配置改成即可成功'DIRS': ["%s/%s" % (BASE_DIR, 'templates'), ],原创 2022-04-20 11:49:13 · 3466 阅读 · 1 评论 -
Django报错Exception Value: (1146, “Table ‘osdb.myadmin_user‘ doesn‘t exist“)解决方法
进入当前项目执行以下2个迁移表命令后即可正常访问:python manage.py makemigrationspython manage.py migrate原创 2022-02-20 15:15:27 · 825 阅读 · 0 评论 -
Did you forget to register or load this tag 报错解决方法
报错信息如下:解决方法:在当前报错的文件,head里面加上 {% load static %}即可运行成功,如下原创 2022-02-19 21:49:10 · 5764 阅读 · 0 评论 -
Django运行报错:Error loading MySQLdb module解决方法
报错信息如下:解决方法:在项目下的__init__.py文件里添加以下代码(主要是项目项目项目!!!不是应用)import pymysqlpymysql.install_as_MySQLdb()添加成功后即可运行成功,祝你好运~原创 2022-02-19 17:40:06 · 1798 阅读 · 0 评论 -
软件测试-面试题分享
1.对以下列表数据进行去重L = [1, 2, 3, 11, 2, 5, 3, 2, 5, 3]L1 = list(set(L))print(L1) #[1, 2, 3, 5, 11]2.下列表数据,如何使数据变成123456?L = [1, 2, 3, 4, 5, 6]s = ''for i in L: s = s + str(i)print(s) #123456print(type(s)) #<class 'str'>3.等长的俩个列表要求合并到一个字原创 2021-10-06 19:21:16 · 793 阅读 · 0 评论 -
python-直连数据库(pymysql)
基本流程:1.导入pymysql包2.创建连接3.创建数据载体(游标对象)4.核心数据传输(sql语句)5.释放资源import pymysql#创建连接conn = pymysql.Connect(host="127.0.0.1", port=3306, database="books", user="root", password="123456", charset="utf8")#创建游标对象lv = conn.cursor()#编写sql语句sql = "select原创 2021-10-06 18:43:59 · 392 阅读 · 0 评论 -
python-Unittest中5大核心要素(TestCase、TestSuite、TestRunner、TestLoader 、 Fixture)
unittest核心要素:TestCase 测试用例TestSuite 测试套件TestRunner 测试运行器TestLoader 测试用例加载器FixtureTestCase 测试用例1.定义测试类:一定要继承unittest.TestCase2.定义测试方法:方法名必须以小写test开头3.运行测试用例:在这里插入代码片TestSuite 测试套件...原创 2021-10-06 09:55:25 · 884 阅读 · 0 评论 -
python-selenium之PO模式
1.创建工具类utils.py文件# 工具类import timefrom selenium import webdriver# 定义浏览器驱动获取和关闭的类# 减少多个用例都调用的实例化浏览器驱动以及最大化和隐式等待的方法,减少部分代码冗余class DriverUtil: # 私有变量,用来存储浏览器驱动对象 __driver = None is_open = True # 获取浏览器驱动 # 1.用类级别定义方法的目的是为了方便测试用例的代码原创 2021-10-06 09:30:37 · 1443 阅读 · 0 评论 -
python-selenium基础实现
1.先封装Base层(base_page.py);将相同的属性和行为进行封装;比如:每一个页面都需要经过元素定位、点击或者输入2.再封装Page层(login_page.py):这是一个页面对象层,也就是把每一个页面当做一个对象,在每个对象中包含属性和行为。通过对Base层的继承,使用Base层定位好的属性和行为3.最后封装TestCase层(testcase_login.py):通过unittest框架,进行用例的设计;如果登录,首先要先加载浏览器,然后方法窗口,引用login_page中方法和属性.原创 2021-10-06 09:02:10 · 240 阅读 · 0 评论 -
python-selenium常用浏览器操作方法
1.窗口最大化:driver.maximize_window() 要放置在浏览器驱动之后2.设置浏览器位置:driver.set_window_position(x,y) x,y表示横坐标和纵坐标,注意在自动化里面原点在屏幕的左上角3.设置浏览器大小:driver.set_window_size(w,h);w表示宽度,h表示高度,以像素为单位4.浏览器前进操作:driver.forward()5.浏览器后退操作:driver.back()6.浏览器刷新:driver.refresh(原创 2021-09-23 22:56:17 · 1356 阅读 · 0 评论 -
python-selenium 的元素定位方法
find_element_by_id:元素必须包含id属性find_element_by_name:元素必须包含name属性find_element_by_class_name:元素必须包含class属性find_element_by_tag_name:标签名,不建议使用,会存在多个,导致取值有问题find_element_by_link_text:全部的文本信息,专门用来定位超链接find_element_by_partial_link_text:表示超链接元素的局部文本信息find_ele.原创 2021-09-23 22:44:08 · 252 阅读 · 0 评论 -
Python-UI自动化基础问题复习(selenium)
1.元素定位的类型id;name;tagName;className;cssSelector;linkText;partialLinText;xpath2.登录按钮除了使用click还可以使用什么?submit;前提是input元素的type为submit3.怎么验证复选按钮是否被选中?使用isSelected方法,返回True就是被选中,反之则没有4.如何处理aler弹窗?首先要先跳转到alert上,然后点击确定或者取消alert = driver.switchTo().aleat() #原创 2021-09-23 22:30:06 · 230 阅读 · 0 评论 -
Python-字符串、列表、元组、字典基础知识复习
【字符串】下标:从0开始;标志每个数据的位置举例:str1 ="大家好呀"print(str1[0]) #值为:大print(str1[-1]) #值为:呀;-1表示最后一个print(str1[len(str1)-1]) #值为:呀;表示获取str1的长度,取最后一个切片:切换字符串,截图字符串举例:str1 = "baidu.com"获取位置2-5的字符num_str1 = str1[2:6]print(num_str1)str1 = "itcast.com"#0123原创 2021-09-23 21:18:57 · 177 阅读 · 0 评论 -
python基础-for循环
for循环和while循环之间的区别:while:更偏向于遍历次数for:更偏向于数据for循环执行多少次,是由数据的长度决定。以下举例说明for循环可以使用range();是专门提供给for循环使用的range(值1,值2,值3):包含最小值,不包含最大值,默认步长为1值1:表示最小值值2:表示最大值值3:表示步长例1:name = "yiqing"for i in name: print(i) #循环了6次例2:打印1~100 之间的数据for i in ra原创 2021-09-22 23:13:22 · 258 阅读 · 0 评论 -
python基础-while
while:分为3部分;变量、条件、自增执行的语句都放在自增的前面,受while控制,有个tab键;变量:初始值条件:具体对应的需求自增作用:跳出循环的条件,如果没有自增就会是死循环,正常情况只能=1操作实例:例1:打印1~100之间的数字n = 1while n <= 100: print(n) n += 1 例2:打印1~100之间的偶数n =1while n <= 100: if n % 2 == 0: print(n)原创 2021-09-22 22:56:57 · 248 阅读 · 0 评论 -
关于Django执行runserver没有反应的问题
关于Django执行runserver没有反应的问题近期刚好在学Django;之前用公司电脑执行的好好的,想回家也玩一玩,结果怎么都不行,各种百度看了各种大佬写的,结果还是不行,崩溃的边缘。如下图所示BUT,功夫不负有心人,在我想要放弃的时候,想了想,是不是版本不兼容问题,毕竟,在使用新电脑后,安装的东西基本都是最新的,老是遇到了版本不兼容的问题。再次开始百度百度百度。终于看到了一丝希望,有大佬也遇到过,我真是爱了。。。迅速一试,果然,棒极了。那位大佬,万分感激。操作如下:首先查看安装django原创 2021-08-07 22:00:55 · 3369 阅读 · 8 评论 -
python-HTMLTestRunner执行成功后报错以及未生成html格式文件问题
一、报错如下所示:解决办法:with open时 ,将wb改成w with open(report_path, "wb") as f: 改成: with open(report_path, "w") as f:二、无法生成html格式文件问题点击Edit Configurations点击+选择python;添加Script path;也就是要执行HTMLTestRunner文件的路径操作完成之后,运行即可...原创 2021-08-22 14:44:22 · 705 阅读 · 0 评论 -
python-flask简易用法
1.先在Config文件中创建reslult.json文件;以便后面写入数据{ "/web/web_login": { "code": 0, "data": {"name": "xxx", "token": "xxxxx"}, "msg": "请求成功"}, "/find_orders": { "code": 0, "data": {"name": "xxx", "token": "xxxxx"}, "msg": "请求成功"}}2.在Stud原创 2021-08-22 17:54:24 · 288 阅读 · 0 评论 -
pyhton-ddt简易用法
import ddtimport unittestdata = [[1, 2, 3, 4, 5], [2, 3, 4, 5, 6], [3, 4, 5, 6, 7], [4, 5, 6, 8, 9]]@ddt.ddtclass TestCase01(unittest.TestCase): @ddt.data(*data) def test_01(self,data1): num1, num2, num3, num4, num5 = data1 pri原创 2021-08-21 22:00:36 · 156 阅读 · 0 评论 -
python-urlparse简易用法
import urllib.parse as urlparseurl = "https://www.baidu.com/user/api/v1/favorite/page?name=yiq&pwd=yiq123456"parsed = urlparse.urlparse(url)print(parsed)querys = urlparse.parse_qs(parsed.query)print(querys)querys = {k: v[0] for k, v in querys原创 2021-08-21 21:52:08 · 291 阅读 · 0 评论 -
python-json.loads和json.dumps的区别
在写python的时候;处理接口请求参数的时候老是把loads和dumps分不清;特此,做个笔记,以便自己能快速的找到答案。json.dumps:将dict类型转换成str类型json.loads:将str类型转换成dict类型注意:json.dumps序列化时对中文默认使用Ascii编码,要输出中文,则需要指定ensure_ascii=False举个栗子:import jsondata = { 'name': '王小', 'phone': 18820210818}strin原创 2021-08-18 22:26:37 · 206 阅读 · 0 评论 -
python-接口自动化-request+excel+ddt+unittest+HTMLTestRunner(通过excel管理用例,通过获取前置条件依赖数据执行用例)
首先,本文excel中case涉及的字段以及顺序为:创建Base包;封装base_request请求方法import requestsclass BaseRequests: #1-1:封装发送post方法; def send_post(self, url, data, header=None): res = requests.post(url=url, data=data, headers=header) return res #1-1原创 2021-08-08 22:44:53 · 854 阅读 · 0 评论