Django中的函数视图和类视图以及路由的定义
Django允许接收的请求方法
http_method_names = [‘get’, ‘post’, ‘put’, ‘patch’, ‘delete’, ‘head’, ‘options’, ‘trace’]
函数视图
函数视图它是一个标准的Python函数
函数视图中, 第一个参数必须定义: 第一个参数为请求对象, 用于接收用户发送的请求报文.
在函数视图中, 必须返回响应对象: 用于构成响应报文, 并响应给用户
请求对象: HTTPRequest() 对应的对象
响应对象: HTTPResponse() 对应的对象1234567891011from django import http# 创建一个函数视图def text_view(request): """ 函数视图 :param request:包含请求报文信息,请求对象 :return: 响应对象,用于构造响应报文,并响应给用户 """ # 响应数据调用http return http.HTTPResponse("数据data") ...
初识Pandas
Pandas是Python最重要的数据分析工具包,是Panel Data Analysis的缩写,也是目前最为流行的Python数据分析工具。最初被作为金融数据分析工具由全球资产管理公司AQR于2008年4月开发,并于2009年底开源出来。
Matplotlib和Seaborn是最为常用的数据可视化的工具包,解决如何通过数据来绘制图表,来更好的展示数据。
NumPy是一个用于数值运算的Python库,专门对数值运算进行优化,最大的优势是快。Pandas底层数据结构采用NumPy来实现,我们也可以把Pandas理解成是对NumPy的封装,让数据分析的一些功能的实现变得更容易。
Pandas安装
1pip install pandas
Pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
作用:
数据读写
数据整理
数据分析Pandas的数据被分为三部分: 行索引(index), 列索引(columns)及数 ...
使用set()方法为对象去重的实现原理__hash__()方法和__eq__()方法
使用set()方法为对象去重的实现原理hash()方法和eq()方法
使用set() 方法根据对象的不同属性进行去重12345678910111213141516171819202122232425262728293031323334353637383940414243"""使用set()方法为对象去重的实现原理"""# 创建一个类, 用来创建生成对象class Employee(object): def __init__(self, name, age, sex): """ 对象有3个是属性, 同一个名字同一性别的对象为一个对象,根据名字和性别进行去重 :param name: 名字 :param age: 年龄 :param sex: 性别 """ self.name = name self.age = age self.sex = ...
简述Python中的迭代器和生成器
简述Python中的迭代器和生成器
才疏学浅, 欢迎建议
迭代器
相比于装饰器, 迭代器是一种很抽象的概念,我理解的比较抽象, 感觉都没有太多地方使用过
对于一个对象来说,实现__iter__方法的叫做迭代对象,而实现__iter__和__next__ 方法的叫迭代器
在进行遍历的时候,循环语句先判断 对象xx是否可以迭代,如果实现__iter__ 就可以使用iter(xx)调用,而__iter__必须要返回一个迭代器才行,也就是一个实现了__iter__和__next__方法的对象
迭代器包含有next方法的实现,在正确的范围内返回期待的数据以及超出范围后能够抛出StopIteration的错误停止迭代。
至于为什么要返回迭代器呢,因为在遍历的时候,会调用next()不断的找下一个值,而next()方法会调用对象的__next__
有更好的理解或者见解欢迎评论告知,感谢
生成器
生成器是一个特殊的程序,可以被用作控制循环的迭代行为,python中生成器是迭代器的一种,使用yield返回值函数,每次调用yield会暂停,而可以使用next()函数和send()函数恢复生成器
生成 ...
先有本地仓库再添加远程仓库,使用Git仓库遇到的bug
git代码仓库使用遇到的情况先说我的报错代码
123456 ! [rejected] master -> master (non-fast-forward)error: failed to push some refs to 'https://gitee.com/lanxiaobai/unittest.git'hint: Updates were rejected because the tip of your current branch is behindhint: its remote counterpart. Integrate the remote changes (e.g.hint: 'git pull ...') before pushing again.hint: See the 'Note about fast-forwards' in 'git push --help' for details.
这个问题我遇到很多次, 每次都知道原因, 但每次都忘,所以在这里记录一下 ...
unittest+selenium编写一个简单的自动化测试用例
测试用例 1
测试对象: B站 (B站登录) https://passport.bilibili.com/login
只简单测试了登录功能,而且还没完善, 没完善的内容是, B站登录需要一个验证码, 我这点没有实现, 所以是选择手动点击图片验证码,下面还有一个GitHub的登录测试用例, GitHub登录时不需要验证码
分析b站的登录网页的数据结构
输入账号的文本框
输入密码的文本框
登录的点击按钮
先创建一个测试用例文件 test_bilibili.py 文件,在里面编写测试用例1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253"""测试用例测试对象: B站 (B站登录) https://passport.bilibili.com/login"""import unittestimport timefrom parameterized import parameterizedfr ...
Python自动化测试(unittest)使用BeautifulReport和HTMLTestRunner生成HTML测试报告
HTML测试报告HTML 测试报告就是执行完测试用例后以网页的方式显示执行的结果
HTML 生成报告的方式1. BeautifulReport安装
1pip install BeautifulReport
先写测试用例, 基本测试用例介绍看上一篇unittest编写测试用例基本使用看代码, 先创建一个test_unittest.py文件,用来编写测试用例
12345678910111213141516171819202122232425262728293031323334353637import unittestfrom BeautifulReport import BeautifulReport"""编写测试用例"""class TestAdd(unittest.TestCase): def setUp(self): """ 方法名固定,在每个测试函数执行前,执行一次,多个测试函数,执行多次 一般做初始化工作, 比如: 实例化一个浏览器、浏览器最大 ...
Python自动化测试Unittest框架基本使用
Unittest 框架
首先要知道这个框架是Python自带的, 不需要安装
这个框架最重要的4 个核心
TestCase
TestSuite
TextTestRunner
Fixture
TestCase
个人总结一下, 这个就是用测试用例继承的, 直接往下看吧
学测试先了解断言把
断言概念:让程序代替人为判断测试程序执行结果是否符合预期结果的过程
断言分类
布尔型断言比较断言复杂断言
看完概念再看一下代码吧好了解一点
先写一个简单测试用例,123456789101112131415161718192021222324import unittestclass TestAdd(unittest.TestCase): def test_add(self): a = 12 print("-------- test_add 测试用例-------") b = 5 # assertEqual 这个方法验证arg1=arg2,不相等则fail(报错) self.assertEqual( ...
Python十大算法之插入排序Python代码简单实现
Python十大算法之插入排序Python代码简单实现
图片上是从已排好序的元素最大坐标开始比较的, 我的代码是从已排好序的元素的最小坐标开始,一个道理的
1234567891011121314151617181920212223242526"""插入排序 (个人理解)先假设第一个元素不动,从第二个元素开始,然后拿着第二个元素跟第一个(已经排好序的元素)进行对比,如果大于第一个元素就把这个元素放在第一个元素后面,现在已经排好两个元素了接着在拿第三个元素,跟已经排好序的元素进行对比,如果该元素遇到比它小的元素就放在它的后面, 以此类推"""def sort_list(list_): # 先定义比较的轮数, 由于是从第二个元素开始的,所以轮数为 总元素个数减 1 for i in range(len(list_)-1): # 然后再定义每轮进行比较的次数,这个次数就是已经排好序的元素个数,每轮排好一个,默认排好一个, 所以次数就是轮次加 1 for n in range(1 + i): ...
Python十大算法之选择排序Python代码简单实现
选择排序
1234567891011121314151617181920212223242526"""(不考虑列表元素小于1的列表,如果列表小于等于1,需要捕获异常)选择排序是记录最小值的下标先拿着一个元素进行元素对比,找到最小的元素,把这个最小的元素放到最前面,然后在从剩余的元素中继续寻找最小的元素,然后放在已经排序过的序列末尾"""def sort_list(list_): # 先定义比较的轮数, 一个一个的比较,所以省去最后一次,总轮数为 元素个数减 1 for i in range(len(list_)-1): # 定义一个最小元素的下标,(如果是降序就是最大元素的下标) min_sub = i # 定义每轮的要进行比较的次数, 由于每轮比较后都会固定一个元素,所以每轮比较次数为 总元素个数减去轮次 for n in range(len(list_) -i): if list_[min_sub] > list_[n+i]: ...