你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner ⭐️ gitee https://gitee.com/Qiuner 🌹 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 😄 (^ ~ ^) 想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎 本文档是一年前学后记得笔记 现在居然还记得很清楚 基于黑马程序员的 软件测试web自动化测试,Web自动化流程精讲和移动自动化测试环境_哔哩哔哩_bilibili 这套技术 目前 本人对软件测试技术已经有了更深刻的理解,如果你想看,可以在评论区告诉我,我会安排上。刚才扫了两眼之前自己写的这份文档,感觉学的很浅
python中的self对象相当于java中的this https://selenium.dev/downloads/ 驱动下载
**
**
lambda表达式
f = lambda x: x * x
print(f(5)) # 25
该表达式相当于一行函数的表达式
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
# 显示等待
from selenium.webdriver.support.wait import WebDriverWait
driver=webdriver.Chrome()
driver.implicitly_wait(10)
url=r"E:\课堂素材\注册A.html"
driver.get(url)
driver.maximize_window()
#此处WebDriverWait将传入的driver赋值给self._driver(一个实例对象的中的属性),until方法调用了self._driver,因此,x为driver
a=WebDriverWait(driver,timeout=10,poll_frequency=0.4).until(lambda x:x.find_element(By.ID,'userA'))
a.send_keys("aaa")
# 隐式等待
import unittest
#核心要素一
# 待测试的函数
def add(x,y):
return x+y
# 定义测试类 并继承来达成使用的目的(python中使用括号加.的方式来继承)
class Test01(unittest.TestCase):# 将光标定在类上,就可以执行这个类下面的函数
def test_add(self): # 光标定在方法上,点击运行,只会执行一个函数
# 要调用的函数
print("结果",add(1,2))
def test_add12(self):
# 要调用的函数
print("结果",add(11,2))
def ttttt(self):# 名称不是test开头不会运行
print("aaa")
if __name__ == '__main__':
# 这样没有用,if的条件不通过 __name__中,如果运行的模块是主模块,
# 那么打印__mian__,不是则存放启动模块的值
# 在测试方法test中打印——name——的值会发现出现的是启动模块(文件)的值
unittest.main()
使用
@classmethod
装饰器将setUpClass
标识为类方法,它的第一个参数通常被命名为cls
,并允许你访问和操作类级别的资源,类方法需要该装饰器
箭头
-> None
不是Python函数定义的一部分,而是类型注释(type hinting)的一部分。它表示函数的返回类型。在这种情况下,-> None
意味着该函数没有返回值,即返回的是None
。 在Python中,函数的返回类型通常不需要显式声明,因为Python是一种动态类型语言,函数可以返回各种不同类型的值。然而,类型注释是一种提供额外信息以帮助代码阅读和静态代码分析的机制。在类型注释中,-> None
表示函数的返回值是None
,即没有返回值。
断言方法 | 参数要求 | 作用 |
---|---|---|
assertEqual(a, b) | a 和 b 需要是可比较的,通常是相同类型。 | 检查 a 和 b 是否相等。 |
assertNotEqual(a, b) | a 和 b 同样需要是可比较的,通常是相同类型。 | 检查 a 和 b 是否不相等。 |
assertTrue(x) | x 应该是一个布尔值(True 或 False)。 | 检查 x 是否为 True。 |
assertFalse(x) | x 应该是一个布尔值(True 或 False)。 | 检查 x 是否为 False。 |
assertIs(a, b) | a 和 b 应该是对象,用于检查对象的身份。 | 检查 a 和 b 是否是相同的对象(身份相同)。 |
assertIsNot(a, b) | a 和 b 应该是对象,用于检查对象的身份。 | 检查 a 和 b 是否不是相同的对象(身份不同)。 |
assertIn(a, b) | a 和 b 可以是可迭代的对象,其中 a 是 b 的一个元素。 | 检查 a 是否在 b 中存在。 |
assertNotIn(a, b) | a 和 b 可以是可迭代的对象,其中 a 不是 b 的一个元素。 | 检查 a 是否不在 b 中存在。 |
assertIsNone(x) | x 可以是任何对象,用于检查它是否为 None。 | 检查 x 是否为 None。 |
assertIsNotNone(x) | x 可以是任何对象,用于检查它是否不为 None。 | 检查 x 是否不为 None。 |
可迭代对象是指能够被迭代遍历的数据结构,通常是包含多个元素的集合。在Python中,许多数据类型都是可迭代的,包括但不限于:
__iter__()
和 __next__()
方法来支持迭代。import unittest
import time
from HTMLTestRunner import HTMLTestRunner
suite = unittest.defaultTestLoader.discover("../case", pattern="test*.py")
if __name__ == '__main__':
# 测试报告存放位置
reportDir = '../case/test_report'
now = time.strftime("%Y-%m-%d-%H-%M-%S")
report_name = reportDir + '/' + now + 'result.html'
with open(report_name, 'wb') as f: # 更改为 'wb' 模式
runner = HTMLTestRunner(stream=f, title="标题", description="小标题")
runner.run(suite)
f.close()
with语句的主要特点和作用如下:
as关键字在with语句中的作用和含义是:
wb和w模式打开文件有以下区别:
以文本写入模式打开文件,如果文件不存在则创建,如果文件存在则将其内容清空后再写入。 这样写入的传输的是bytes
以二进制写入模式打开文件,如果文件不存在则创建,如果文件存在则将其内容清空后再写入。 这样写入传输的是str 主要区别在于:
dJydHhYx-1715083072843)]
[外链图片转存中…(img-s8fyLE1T-1715083072844)]
[外链图片转存中…(img-bOl9BqsR-1715083072844)]
[外链图片转存中…(img-FNUg34qz-1715083072845)]
[外链图片转存中…(img-FAhvZlZf-1715083072846)]
[外链图片转存中…(img-Ul3kdNmm-1715083072847)]