12 2022 档案
摘要:对于每一条selenium脚本,一个http请求会被创建并且发送给浏览器的驱动,浏览器驱动中包含了一个http server。用来接收这些请求,http server接收到请求后根据请求来具体操控对应的浏览器,浏览器执行具体的测试步骤,浏览器将步骤执行结果返回给http server,http se
阅读全文
摘要:conftest文件名不可修改,需要与用例在一个文件下,可以有多个conftest文件。 第一步编写conftest文件里的函数 以下为conftest文件里内容。 # -*- coding: utf-8 -*-import pytest@pytest.fixture()def pf(): prin
阅读全文
摘要:在pytest框架中,有如下约束: 所有的单测文件名都需要满足test_*.py格式或*_test.py格式。在单测文件中,测试类以Test开头,并且不能带有 init 方法(注意:定义class时,需要以T开头,不然pytest是不会去运行该class的)在单测类中,可以包含一个或多个test_开
阅读全文
摘要:1、将接口返回值数据转化成字典形式。使用json.loads()方法 2、使用jsonschame模块进行校验 3、校验返回值和schame schame事先编写 代码如下,mock了一个接口,对该接口进行校验返回值 # -*- coding: utf-8 -*-import jsonfrom js
阅读全文
摘要:数据读取: 1、使用 fetchone() 方法获取单条数据 data = cursor.fetchone() print(data) 2、使用fetchall()方法获取多条数据 rows = cur.fetchall()for row in rows: print(row)
阅读全文
摘要:前提:电脑已经安装数据库环境 1、导入pymysql库 2、建立连接: md = pymysql.connect(host='localhost',user='root',password='数据库密码',db='lili') 3、新建游标: cur = md.cursor() 4、写sql sql
阅读全文
摘要:adb类 adb install -r [apk地址] adb uninstall [包名] 查看所有软件 adb shell pm list packages adb启动软件 adb shell am start -n [包名] adb查看版本号 adb shell dumpsys package
阅读全文
摘要:递归 具体做法: step 1:对于每个节点,若是不为空才能累计一次深度,若是为空,返回深度为0. step 2:递归分别计算左子树与右子树的深度。 step 3:当前深度为两个子树深度较大值再加1。 def maxDepth(self , root: TreeNode) -> int: # wri
阅读全文
摘要:def inorder(self, list: List[int], root: TreeNode): # 遇到空节点则返回 if not root: return # 先遍历左子树 self.inorder(list, root.left) # 再遍历根节点 list.append(root.va
阅读全文
摘要:具体做法: step 1:准备数组用来记录遍历到的节点值,Java可以用List,C++可以直接用vector。 step 2:从根节点开始进入递归,遇到空节点就返回,否则将该节点值加入数组。 step 3:依次进入左右子树进行递归。 def preorder(self, list: List[in
阅读全文
摘要:具体做法: step 1:从数组首尾开始,每次取中点值。 step 2:如果中间值等于目标即找到了,可返回下标,如果中点值大于目标,说明中点以后的都大于目标,因此目标在中点左半区间,如果中点值小于目标,则相反。 step 3:根据比较进入对应的区间,直到区间左右端相遇,意味着没有找到. def se
阅读全文
摘要:重复的留下一个 def deleteDuplicates(self , head: ListNode) -> ListNode: # write code here #空链表 if head == None: return None #遍历指针 cur = head #指针当前和下一位不为空 whi
阅读全文
摘要:思路:变成数组操作 def oddEvenList(self , head: ListNode) -> ListNode: # write code here p = head nums = [] while p: nums.append(p.val) p = p.next p = head num
阅读全文
摘要:思路: 链表最难受的就是不能按照下标访问,只能逐个遍历,那像排序中常规的快速排序、堆排序都不能用了,只能用依次遍历的冒泡排序、选择排序这些。但是这些O(n2)O(n^2)O(n2)复杂度的排序方法太费时间了,我们可以将其转化成数组后再排序。 具体做法: step 1:遍历链表,将节点值加入数组。 s
阅读全文
摘要:解题思路: 我们使用两个指针,fast 与 slow。 它们起始都位于链表的头部。随后,slow 指针每次向后移动一个位置,而fast 指针向后移动两个位置。如果链表中存在环,则 fast 指针最终将再次与 slow 指针在环中相遇。 def hasCycle(self, head: ListNod
阅读全文
摘要:具体过程: step 1:判断空链表的情况,只要有一个链表为空,那答案必定就是另一个链表了,就算另一个链表也为空。 step 2:新建一个空的表头后面连接两个链表排序后的节点,两个指针分别指向两链表头。 step 3:遍历两个链表都不为空的情况,取较小值添加在新的链表后面,每次只把被添加的链表的指针
阅读全文
摘要:题目: 将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。 具体做法:k = 3 step 1:每次从进入函数的头节点优先遍历链表k次,分出一组,若是后续不足k个节点,不用反转直接返回头。 st
阅读全文
摘要:单链表中的第m和n之间元素反转 m = 2,n = 4 具体做法: step 1:我们可以在链表前加一个表头,后续返回时去掉就好了,因为如果要从链表头的位置开始反转,在多了一个表头的情况下就能保证第一个节点永远不会反转,不会到后面去。 res = ListNode(-1) res.next = he
阅读全文
摘要:第一次循环: 第一步:next = head.next将 head.next 赋值给 next 变量,即next 指向了节点2,先将节点2 保存起来。 第二步:head.next = pre (初始pre==None)将 pre 变量赋值给 head.next,即 此时节点1 指向了 None 第三
阅读全文