比培训机构还详细的 Python 学习路线,你信吗 0^0

前言

  • 这其实是将自己写的文章进行一个总结分类,并不代表最佳学习路线
  • 会不断更新这篇文章…没链接的文章正在编写ing…会不会哪天我的这个目录就出现在培训机构的目录上了…
  • 目前实战比较少(要是有多点实战,我就开培训了哈哈哈)

 

Python

基础

Python – 头部解析

Python – 导入的位置

Python – 执行顺序、执行入口

Python – 变量

Python – 变量的作用域 

Python – 常用内置变量

Python – 算术运算符

Python – //和/的区别

Python – 赋值运算符

 

数据类型相关

Python – 基础数据类型 Number 数字、bool 布尔、complex 复数

Python – 基础数据类型 str 字符串

Python – 字符串常用函数详解

Python – 字符串格式化详解(%、format)

Python – r”, b”, u”, f” 的含义

Python – bytes与字符串的相互转化

Python – 判断一个字符串是否包含某个指定的字符串

Python – 字符串 encode

Python – 基础数据类型 list 列表

Python – 如何将 list 列表作为数据结构使用

Python – list 列表常见方法

Python – 基础数据类型 tuple 元组

Python – 可变和不可变对象 

Python – 基础数据类型 dict 字典

Python – dict 字典的多种遍历方式

Python – dict 字典常见方法

Python – 基础数据类型 set 集合

Python – 对象赋值、浅拷贝、深拷贝的区别

Python – 浅拷贝的四种实现方式

 

循环相关

Python – 详解 range()

Python – for 循环

Python – if 条件控制

Python – while 循环

Python – break、continue 的使用 

 

函数相关

Python – 函数

Python – 函数形参之必填参数、默认参数、可变参数、关键字参数的详细使用

Python – 基本数据处理函数round()、int()、floor()、ceil()

Python – 解包的各种骚操作

Python – 3.8 新特性之仅位置参数 & 仅关键字参数

Python – 函数实战

Python – lambda 表达式

Python – repr()、str() 的区别

Python – eval()

Python – bytes()

 

面向对象编程

Python – 面向对象编程 – 什么是 Python 类、类对象、实例对象Python – 面向对象编程 – 什么是对象和类

Python – 面向对象编程 – __init__() 构造方法

Python – 面向对象编程 – __del__() 析构方法

Python – 面向对象编程 – self 参数

Python – 面向对象编程 – 小实战(1)

Python – 面向对象编程 – 类变量、实例变量/类属性、实例属性 

Python – 面向对象编程 – 实例方法、静态方法、类方法

Python – 面向对象编程 – __str__() 

Python – 面向对象编程 – __repr__()

Python – 面向对象编程 – 公共属性、保护属性、私有属性

Python – 面向对象编程 – 小实战(2)

Python – 面向对象编程 – 小实战(3)

Python – 面向对象编程 – 三大特性之封装

Python – 面向对象编程 – @property

Python – 面向对象编程 – 实战(4)

Python – 面向对象编程 – 三大特性之继承

Python – 面向对象编程 – 子类方法的重写

Python – 面向对象编程 – 新式类和旧式类

Python – 面向对象编程 – 多继承

Python – 面向对象编程 – super()

Python – 面向对象编程 – 使用 super() 的一些注意事项

Python – 面向对象编程 – MRO 方法搜索顺序

Python – 面向对象编程 – 三大特性之多态

Python – 面向对象编程 – 实战(5) 

Python – 面向对象编程 – __call__()

Python – 面向对象编程 – __new__() 和单例模式 

Python – 面向对象编程 – 魔术方法(双下划线方法)

Python – 面向对象编程 – 实战(6)

Python – 模块与包

Python – 错误和异常

 

文件相关

Python – with open()、os.open()、open()的详细使用

Python – 文件读取read()、readline()、readlines()区别

Python – os.walk()详细使用

Python – 文件模式a+读取不了文件

Python – 批量修改文件名

 

高级点的

Python – 多线程、多进程

Python 高级特性(1)- 切片

Python 高级特性(2)- 可迭代对象 iterable

Python 高级特性(3)- 列表生成式

Python 高级特性(4)- 生成器 generator

Python 高级特性(5)- 迭代器 Iterator

 

typing、类型提示

Python -类型提示 Type Hints

Python – typing 模块 —— 常用类型提示

Python – typing 模块 —— 类型别名

Python – typing 模块 —— NewType

Python – typing 模块 —— Callable

Python – typing 模块 —— Any Type

Python – typing 模块 —— TypeVar 泛型

Python – typing 模块 —— Union

Python – typing 模块 —— Optional

 

Pydantic

Python – pydantic 入门介绍与 Models 的简单使用

 

新奇的 Python 库

Python – random 库的详细使用

Python – logging 日志库

Python – 超好用的第三方库pathlib,快速获取项目中各种路径

Python – loguru日志库,高效输出控制台日志和日志记录

Python – 通过PyYaml库操作YAML文件

Python – 常⽤的操作 excel 第三方库

Python – os库

Python – 执行cmd命令

Python – 进度条库 tqdm

 

常见问题解决方案

Python常见问题 – 使用openpyxl模块时出现错误: zipfile.BadZipFile: File is not a zip file

Python常见问题 – 写入数据到 excel 报 ValueError: invalid literal for int() with base 10 错误

 

做项目可能会用到的

Python – 生成 requirement.txt 文件

Python – pip 常用命令

Python – pipupgrade 库

Python – pip-review 库

Python – pip 批量更新

 

数据库相关

Python – 操作 MySQL 数据库

 

新人写的不着调工具类

仅做记录,不值得参考

Python工具类(一)—— 操作Mysql数据库

Python工具类(二)—— 操作时间相关

 

很low的基础习题集

Python习题集(一)

Python习题集(二) 

Python习题集(三) 

Python习题集(四)

Python习题集(五)

Python习题集(六) 

Python习题集(七)

Python习题集(八)

Python习题集(九)

Python习题集(十)

Python习题集(十一)

Python习题集(十二)

Python习题集(十三)

Python习题集(十四)

Python习题集(十五)

Python习题集(十六)

 

接口自动化

python接口自动化测试 – configparser配置文件解析器详细使用 

python接口自动化测试 – openpyxl封装类

python接口自动化测试 – openpyxl基本使用

python接口自动化测试 – unittest框架基本使用

python接口自动化测试 – unittest框架suite、runner详细使用

python接口自动化测试 – mock模块基本使用介绍

python接口自动化测试 – requests库的post请求进行文件下载

python接口自动化测试 – requests库的post请求进行文件上传

python接口自动化测试 – requests库的基础使用

python接口自动化测试 – 数据驱动DDT模块的简单使用

 

常见问题解决方案

Python常见问题 – python3 requests库提示警告InsecureRequestWarning的问题

Python常见问题 – python3 使用requests发送HTTPS请求报certificate verify failed 错误

Python常见问题 – requests请求参数包含中文报错:UnicodeEncodeError: ‘latin-1’ codec can’t encode characters in position 13-14:  is not valid Latin-1. Use body.encode(‘utf-8’)

 

Pytest+Allure

Pytest系列(1) – 快速入门和基础讲解

Pytest系列(2) – assert断言详细使用

Pytest系列(3) – setup和teardown的详细使用

Pytest系列(4) – fixture的详细使用 

Pytest系列(5) – 测试用例执行后的几种状态

Pytest系列(6) – conftest.py的详细讲解

Pytest系列(7) – skip、skipif跳过用例

Pytest系列(8) – 使用自定义标记mark

Pytest系列(9) – 参数化@pytest.mark.parametrize

Pytest系列(10) – fixture 传参数 request的详细使用

Pytest系列(11)- 失败重跑插件pytest-rerunfailures的详细使用

Pytest系列(12)- 测试结果生成HTML报告插件之pytest-html的详细使用

Pytest系列(13)- 重复执行用例插件之pytest-repeat的详细使用

Pytest系列(14)- 配置文件pytest.ini的详细使用

Pytest系列(15)- 多重校验插件之pytest-assume的详细使用

Pytest系列(16)- 分布式测试插件之pytest-xdist的详细使用

Pytest系列(17)- pytest-xdist分布式测试的原理和流程

Pytest系列(18)- 超美测试报告插件之allure-pytest的基础使用

Pytest系列(19)- 我们需要掌握的allure特性

Pytest系列(20)- allure的特性,@allure.step()、allure.attach的详细使用

Pytest系列(21)- allure的特性,@allure.description()、@allure.title()的详细使用

Pytest系列(22)- allure的特性,@allure.link()、@allure.issue()、@allure.testcase()的详细使用

Pytest系列(23)- allure 打标记之 @allure.epic()、@allure.feature()、@allure.story() 的详细使用

Pytest系列(24)- allure 环境准备

Pytest系列(25)- @allure.severity 标记用例级别

Pytest系列(26)- 清空 allure 历史报告记录

Pytest系列(27)- allure 命令行参数

Pytest系列(28)- 参数化 parametrize + @allure.title() 动态生成标题

Pytest系列(29)- 详解 allure.dynamic 动态生成功能

Pytest 面试宝典

 

实战小项目

Docker + Jenkins + Gitlab + Pytest + Allure 接口自动化测试之持续集成实战终极教程

 

UI 自动化

Selenium系列(二) – 详细解读针对浏览器的操作Selenium系列(一) – 详细解读8种元素定位方式

Selenium系列(三) – 详细解读针对元素常见的简单操作

Selenium系列(四) – 详细解读鼠标操作

Selenium系列(五) – 详细解读键盘操作

Selenium系列(六) – 详细解读强制等待、隐式等待、显式等待的区别和源码解读

Selenium系列(七) – 切换iframe 

Selenium系列(八) – 截取完整页面和截取指定元素并保存为图片

Selenium系列(九) – 针对alert窗口的处理(警告框、确认框、对话框)和源码解读

Selenium系列(十) – 针对Select下拉框的操作和源码解读

Selenium系列(十一) – 针对两种上传文件方式的实现方案

Selenium系列(十二) – 自动化必备知识之CSS选择器的详细使用

Selenium系列(十三) – 自动化必备知识之Xpath的详细使用

Selenium系列(十四) – Web UI 自动化基础实战(1) 

Selenium系列(十五) – Web UI 自动化基础实战(2)

Selenium系列(十六) – Web UI 自动化基础实战(3)

Selenium系列(十七) – Web UI 自动化基础实战(4)

Selenium系列(十八) – Web UI 自动化基础实战(5)

Selenium系列(十九) – Web UI 自动化基础实战(6)

Selenium系列(二十) – PageObject模式的详细介绍

Selenium系列(21) – Cookie操作和源码解读

Selenium系列(22) – 通过selenium控制浏览器滚动条的几种方式

Selenium常见报错问题(1)- 先来认识下selenium常见异常类

Selenium常见报错问题(2)- 解决和分析StaleElementReferenceException异常

Selenium常见报错问题(3)- 解决和分析NoSuchElementException

Selenium 面试宝典

 

APP 自动化

Appium自动化(1) – 环境准备详细教程

Appium自动化(2) – appium环境安装常见问题的解决方案

Appium自动化(3) – adb无线连接手机的方法

Appium自动化(4) – Appium Desired Capabilities 参数详解

Appium自动化(5) – 如何获取android app 的Activity 和 Package

Appium自动化(6) – 控件定位工具之uiautomatorviewer 的详细介绍

Appium自动化(7) – 控件定位工具之Appium 的 Inspector

Appium自动化(8) – 可定位的控件属性

Appium自动化(9) – appium元素定位的快速入门

Appium自动化(10) – appium高级元素定位方式之 UI Automator API 的详解

Appium自动化(11) – 详解 Applications 类里的方法和源码解析

Appium自动化(12) – 详解 HardwareActions 类里的方法和源码分析

Appium自动化(13) – 详解 Keyboard 类里的方法和源码分析

Appium自动化(14) – 详解 ActionHelpers 类里的方法和源码分析

Appium自动化(15) – 针对 webview 进行自动化测试

Appium自动化(16) – 使用手机浏览器进行自动化测试

 

 

常见问题解决方案

Appium问题解决方案(1)- 设置unicodeKeyboard: True运行脚本后,手机输入时无法调出软键盘 

Appium问题解决方案(3)- java.lang.IllegalStateException: UiAutomation not connected! 

Appium问题解决方案(2)- AttributeError:module ‘appium.webdriver’ has no attribute ‘Remote’

Appium问题解决方案(4)- Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException

Appium问题解决方案(5)- selenium.common.exceptions.InvalidSelectorException: Message: Locator Strategy ‘name’ is not supported for this session

Appium问题解决方案(6)- Java堆栈错误:java.lag.ClassNotFoundException:org.eclipse.swt.widets.Control

Appium问题解决方案(7)- Could not find ‘adb.exe’ in PATH. Please set the ANDROID_HOME environment variable with the Android SDK root directory path

Appium问题解决方案(8)- selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not sign with default certificate.

Appium问题解决方案(9)- Original error: Failed to launch Appium Settings app: Condition unmet after 5090 ms

Appium问题解决方案(10)- Original error: Swipe did not complete successfully 

 

RobotFramework

Robot Framework(1)- 入门介绍

Robot Framework(2)- 快速安装

Robot Framework(3)- 基本概念

Robot Framework(4)- 测试套件的基本使用

Robot Framework(5)- 使用测试库

Robot Framework(6)- BuiltIn 测试库常用的关键字列表

Robot Framework(7)- DateTime 测试库常用的关键字列表

Robot Framework(8)- Collections 测试库常用的关键字列表

Robot Framework(9)- 使用变量文件

Robot Framework(10)- 使用资源文件

Robot Framework(11)- 用户关键字的详解

Robot Framework(12)- 详细解读 RF 的变量和常量

Robot Framework(13)- RF 循环的详细使用

Robot Framework(14)- Variables 表的详细使用和具体例子

Robot Framework(15)- 扩展关键字

Robot Framework 面试题

 

Flask

Flask(1)- 简介

Flask(2)- 第一个 Flask Application

Flask(3)- Flask 中的 HTTP 方法

Flask(4)- URL 组成部分详解

Flask(5)- 动态路由

Flask(6)- debug 模式

Flask(7)- request 对象

Flask(8)- jinja2 模板入门

Flask(9)- 蓝图的基本使用

Flask(10)- 标准类视图

Flask(11)- 操作 Cookie

Flask(12)- 操作 Session

 

常见问题解决方案

Flask – 解决 app.run() 添加 host、port、debug 参数后运行不生效的问题 

Flask – 访问返回字典的接口报错:The view function did not return a valid response. The return type must be a string, tuple, Response instance, or WSGI callable, but it was a dict.

 

FastAPI

FastAPI(1)- 简单介绍