一、 协程(Coroutine)技术1. 基本用法线程 :又叫 微线程 、 纤程
协程是一种用户级的轻量级线程 。
协程 拥有自己的寄存器上下文和栈。
协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来时,恢复先前保存的寄存器和栈。
优点:
协程极高的执行效率。
因为子程序切换不是线程切换,而是由程序自身控制,因此没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。
不需要多线程的锁机制
只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就可以,所以执行效率比多线程高很多。
缺点:
无法利用多核资源
协程的本质是个单线程,他不能同时将 单个 CPU 的多个核用上,协程需要和进程配合才能运行在多 CPU 上。(适用于 CPU 密集型 应用)
进行阻塞(Blocking) 操作(如 IO 时)会阻塞掉整个程序
2. geventgevent :一个现在很火、支持也会全面的 Python 第三方协程库。
由于切换是在 IO 操作时自动完成,所以 gevent 需要修改 Python 自带的一些标准库,这一过程在启动时通过 ...
一、PySide2 、 PyQt5 简介PySide2、PyQt5 都是基于著名的 Qt 库。Qt 库里面有非常强大的图形界面开发库,但是 Qt 库是 C++语言开发的,PySide2、PyQt5 可以让我们通过 Python 语言使用 Qt。PySide2 是 Qt 的 亲儿子 , PyQt5 是 Qt 还没有亲儿子之前的收的 义子 (Riverbank Computing 这个公司开发的)。那为什么 PyQt5 这个义子 反而比 PySide2 这个亲儿子更出名呢?原因很简单:PySide2 这亲儿子最近(2018 年 7 月)才出生。
二、 PySide2 安装1pip install pyside2
网络比较慢,可以指定国内的安装源,下载安装。
1pip install pyside2 -i https://pypi.douban.com/simple/
Qt 官方网站声明了: Windows上 Python 3.8.0 调用 Qt 5.14 , 会有问题。有类似下面这样的导入错误
1ImportError: Dll load failed while importing sh ...
Python Qt 官方文档 - 控件部分
一、按钮QPushButton 就是常见的按钮
官网介绍
1. 信号:被点击当按钮被点击就会发出 clicked 信号,可以这样指定处理该信号的函数
1button.clicked.connect(handleCalc)
2. 方法:改变文本代码中可以使用 setText 方法来改变按钮文本,比如
1button.setText(text)
3. 方法:禁用、启用所有控件(继承自 QWidget 类)都支持 禁用和启用方法。禁用后,该控件不再处理用户操作
禁用
1button.setEnabled(False)
启用
1button.setEnabled(True)
二、 单行文本框QLineEdit 是只能单行编辑的文本框。
官网介绍
1. 信号:文本被修改当文本框中的内容被键盘编辑,被点击就会发出 textChanged信号,可以这样指定处理该信号的函数
1edit.textChanged.connect(handleTextChange)
Qt 在调用这个信号处理函数时,传入的参数就是 文本框目前的内容字符串。
2. 信号: ...
123headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36' }
一、csv 库Python 天生支持读取 CSV 格式数据并且是可配置的(这个我们看到是必不可少的)。
在 Python 里边有个模块 csv ,它包含了 CSV 读取/生成所需的所有支持,并且它遵守 RFC 标准(除非你覆盖了相应的配置),因此默认情况下它是能够读取和生成合法的 CSV 文件
创建一个像常规编写器一样操作的对象,但将字典映射到输出行。的字段名的参数是一个sequence标识,其中在传递给字典值的顺序按键的writerow()方法被写入到文件中
二、 pandas 使用方法
对于数据科学家,无论是数据分析还是数据挖掘来说,Pandas 是一个非常重要的 Python 包。
它不仅提供了很多方法,使得数据处理非常简单,同时在数据处 ...
1.0 版本需求: 1.完成一个端口的扫描
123456789101112131415161718192021222324252627import socketdef scanPort(): # 1.使用 TCP 协议扫描端口 sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2.设置连接时间 sk.settimeout(0.5) scan_ip = input("请输入需要扫描的IP:") scan_port = input("请输入需要扫描的port:") try: # 3.创建连接 conn = sk.connect_ex((scan_ip, int(scan_port))) if conn == 0: print(f'主机:{scan_ip},端口:{scan_port} 已开放。') # 4.关 ...
一、 httpRunnerHttpRunner : 一款面向 HTTP(s) 协议的通用测试框架,只需要编写和维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。
充分复用优秀的开源项目,不追求重复造轮子,而是将强大的轮子组装。
遵循 约定大于配置 的准则,在框架功能中融入自动化测试最佳工程实践。
追求投入产出比,一份投入即可实现多种测试需求。
1. 特征
支持以 YAML/JSON 格式定义测试用例
支持响应验证
支持初始化清除机制
支持套件级别的用例管理
支持 Pytest 命令(hrun 底层封装的 pytest)
支持 allure 生成测试报告
支持 性能测试 (底层 Locust)
2. 主流版本差异
二、 HttpRunner 安装httpRunner 使用 python 开发, 支持 Python 3.6 + 和大多数操作系统
安装:
1pip install httpRunner
验证:
123httprunner -Vhrun -V
五大核心命令:
httprunner : 主命令,用于所有功能
hrun : 别名 ...
一、 httprunner 用例变量1. 配置变量(config variables)
用于数据解耦 —- 字典类型
定义在 config 或者 teststep 中
变量在引用时,不使用函数引用,可以不加大括号 {}
用例级别(config 中 配置)方式 1:直接 指定 参数
123456789101112131415161718192021222324config: name: 登录 base_url: http://120.55.190.222:7080 verify: false variables: # 用例变量 --- 字典类型 user: auto # 方式 1:直接指定参数的方式 pw: sdfsdfsdf export: # 返回测试步骤中提取的变量 --- 列表类型 - cookieteststeps: - name: 登录 request: method: POST url: /api/mgr/loginReq data: username: ${user} ...
一、 数据库配置1. 搭建 MySQL 数据库数据库搭建(🚀CentOS 8 搭建 MySQL 8)
2. 创建数据库1CREATE DATABASE `course_autotp` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
3. 安装 pymysqlclient 模块123# 链接 mysql 数据库需要此模块,此模块安装不了的,参考附录的方法pip install mysqlclient
4. 配置 数据库参数1234567891011121314DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'course_autotp', # 数据库名称 'USER': 'root', # 用户名 ...
一、 数据库查询强化训练1. 字段条件查询字段查询是指如何指定 SQL WHERE 子句的内容。
它们用作QuerySet的filter(), exclude()和get()方法的关键字参数。
其基本格式是:field__lookuptype=value,注意其中是 双下划线。
默认查找类型为 exact(精确匹配)。
lookuptype 的类型有:
Django 的数据库 API 支持 20 多种查询类型,下表列出了所有的字段查询参数:
字段名
说明
exact
精准匹配
iexact
不区分大小写的精准匹配
contains
包含匹配
icontains
不区分大小写的包含匹配
in
在 。。。之内的匹配
gt
大于
gte
大于等于
lt
小于
lte
小于等于
startswith
从开头匹配
istartswith
不区分大小写的从开头匹配
endswith
从结尾处匹配
iendswith
不区分大小写的从结尾处匹配
range
范围匹配
date
日期匹配
year
年份匹配
iso_yea ...
一、 资源的增删改查1. 新增资源1234567891011121314151617181920212223# views.py@api_view(['GET', 'POST']) # 允许的请求方法def request_list(request, format=None): # 查询数据 if request.method == 'GET': # 构造序列化器 serializer = RequestSerializer(Request.objects.all(), many=True) # 返回 json 格式数据 # safe=False 是为了支持 {} 以外的 python 对象转 json return Response(serializer.data) # 将 python 原生格式转成 json 数据 # 新增数据 --- POST elif request.method == 'P ...














