快用DjangoRESTframework写写API吧

Django默认是前后端绑定的,提供了Template和Form,现在流行前后端分离项目,Python大佬坐不住了,于是便有了Django REST framework:https://github.com/tomchristie

条件循环语句组成了Python代码的骨架

本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 条件控制 我们都知道流程图是有多个分支的,程序中也是如此,在Python中是用if语句来判断程序该走哪个分支的。它的执行过程如下: 代码执行过程如下 if if语句的一般形式如下: if condition_1: statement_block_1 如果condition_1为True,执行statement_block_1。 condition_1是条件表达式,由各种运算符和数据类型组成,条件表达式的结果可以是True/False的布尔值,也可以是非布尔值。Python中的0、None、空列表、空字典等都会被认为是False,反之都会被认为是True。 else else语句在条件为False时执行: if condition_1: statement_block_1 else: statement_block_2 如果condition_1为True,执行statement_block_1。 如果condition_1为False,执行statement_block_2。 elif if…else实现了“如果满足条件,那么xxx,否则xxx”,除此之外,还可以用elif实现多个连续判断,分别执行不同的语句: if condition_1: statement_block_1 elif condition_2: statement_block_2 else: statement_block_3 如果condition_1为True,执行statement_block_1。 如果condition_1为False,再判断,如果condition_2为True,执行statement_block_2。 否则,执行statement_block_3。 elif可以写多个。这种写法的执行顺序是从上往下,只要满足了某个if或elif的条件,就会在当前分支执行后跳出去,不再执行后面的判断,如果每个if或elif的条件都是False,最后就会执行else。 if嵌套 假如想满足if或elif的条件后,继续做判断,那么就需要进行if语句嵌套,让statement_block_1等代码块也包含if语句: if 表达式1: 语句 if 表达式2: 语句 elif 表达式3: 语句 else: 语句 elif 表达式4: 语句 else: 语句 示例: ...

Flask使用SQLite数据库

SQLite是一个小型的轻量数据库,特别适合个人学习使用。因为SQLite不需要额外的数据库服务器,同时它也是内嵌在Python中的。缺点就是如果有大量的写请求过来,它是串行处理的,速度很慢。

2026-01-05 · 1 分钟 · 184 字 · 测试开发刚哥 · Python生态 · #Flask

HttpRunner3的$符号是如何解析的

本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 变量解析 $符号在很多测试框架中都会拿来用做变量解析,大名鼎鼎的JMeter就有这个用法。HttpRunner3也支持$符号,比如: Step( RunRequest("登录") .post("/login") .with_headers(**{"Content-Type": "application/json"}) .with_json({"username": "dongfanger", "password": "123456"}) .extract() .with_jmespath("body.token", "token") .validate() .assert_equal("status_code", 200) ), Step( RunRequest("搜索商品") .get("searchSku?skuName=电子书") .with_headers(**{"token": "$token"}) .extract() .with_jmespath("body.skuId", "skuId") .with_jmespath("body.price", "skuPrice") .validate() .assert_equal("status_code", 200) ), 从登录提取的变量token,在搜索商品中使用$token来引用。 parser.py HttpRunner对$符号的解析是在parser.py文件中实现的: 这些方法可以分为四类: url build_url() 变量 extract_variables() get_mapping_variable() parse_variables_mapping() regex_findall_variables() parse_data() parse_string() 函数 get_mapping_function() parse_function_params() regex_findall_functions() parse_string_value() parse_data() parse_string() 参数化("${parameterize(account.csv)}") parse_parameters() 本文专门针对变量这一块源码来进行剖析。 全局变量池 HttpRunner3在运行时的所有变量都是存储在__session_variables这个字典中的: 在脚本开始时会把config的预设变量加载进来,然后会在执行Step测试步骤时,把各个步骤的变量也放到全局变量池里面。 解析过程 在runner.py的第350行代码能看到解析变量的调用: 然后parse_variables_mapping()函数需要仔细看: def parse_variables_mapping( variables_mapping: VariablesMapping, functions_mapping: FunctionsMapping = None ) -> VariablesMapping: parsed_variables: VariablesMapping = {} while len(parsed_variables) != len(variables_mapping): for var_name in variables_mapping: if var_name in parsed_variables: continue var_value = variables_mapping[var_name] variables = extract_variables(var_value) # check if reference variable itself if var_name in variables: # e.g. # variables_mapping = {"token": "abc$token"} # variables_mapping = {"key": ["$key", 2]} raise exceptions.VariableNotFound(var_name) # check if reference variable not in variables_mapping not_defined_variables = [ v_name for v_name in variables if v_name not in variables_mapping ] if not_defined_variables: # e.g. {"varA": "123$varB", "varB": "456$varC"} # e.g. {"varC": "${sum_two($a, $b)}"} raise exceptions.VariableNotFound(not_defined_variables) try: parsed_value = parse_data( var_value, parsed_variables, functions_mapping ) except exceptions.VariableNotFound: continue parsed_variables[var_name] = parsed_value return parsed_variables tests/parser_test.py有一段测试代码: ...

pytest参数化进阶

用过unittest的朋友,肯定知道可以借助DDT实现参数化。用过JMeter的朋友,肯定知道JMeter自带了4种参数化方式(见参考资料)。pytest同样支持参数化,而且很简单很实用。

你知道Python基本数据类型是哪6个么

Python 是强类型语言,在学习 Python 时,有必要了解 Python 有哪些基本数据类型,一共 6 个:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)。数据类型的知识是非常多的,一篇文章讲不明白,本文仍然属于入门系列,内容主要是基础简介。

自定义Django认证系统的技术方案

Django已经提供了开箱即用的认证系统,但是可能并不满足我们的个性化需求。自定义认证系统需要知道哪些地方可以扩展,哪些地方可以替换。本文就来介绍自定义Django认证系统的相关技术细节。

Django认证系统并不鸡肋反而很重要

在使用django-admin startproject创建项目后,Django就默认安装了一个采用session实现的认证系统。这是Django相比于其他框架的一大特点:自带认证系统,开箱即用。有人说它方便,有人说它鸡肋,但它作为Django的重要组成部分,学习它有助于我们理解Django框架的核心技术。

FastAPI使用typing类型提示

typing是Python标准库,用来做类型提示。FastAPI使用typing做了:

Flask启动应用时都干了些啥

一个Flask应用(Flask Application)是Flask类(Flask Class)的实例。在前面的文章中,都是通过定义全局Flask实例的方式来编写的Flask应用代码,比如:

2026-01-04 · 1 分钟 · 162 字 · 测试开发刚哥 · Python生态 · #Flask