python - 如何在对象初始化时调用具有特定命名模式的所有方法
问题描述
我开始学习 Selenium,我很好奇如何从PythonOrgSearch
继承自的类中实现行为unittest.TestCase
。test_
即初始化后会自动调用每个开头的方法。我知道这种行为已经实现,TestCase
但我对如何制作类似的东西很感兴趣。有没有设计模式可以解决这个问题?
还有一个额外的问题, 有什么意义assert True
,因为条件总是True
import unittest
from selenium import webdriver
class PythonOrgSearch(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome("C:\chorme\chromedriver.exe")
self.driver.get("http://www.python.org")
def test_example(self):
print("Test")
assert True
def not_test(self):
print("Not a test")
def tearDown(self):
self.driver.close()
if __name__ == "__main__":
unittest.main()
解决方案
对于第一个问题,您可以使用dir()
onself
获取其成员的列表(dir 的官方文档)。
之后,您可以通过一些简单的方式测试名称模式,如果它是可调用的,您可以调用它:
for name in dir(self):
if name[:5] == 'test_' and callable(getattr(self, name)):
res = getattr(self, name)()
print(res)
关于你的奖金问题,强制函数重载是一种常见的做法。
推荐阅读
- c++ - 确定性执行时间度量
- html - 渲染href链接的问题
- 将 th:if 条件与 Thymeleaf 一起使用
- c++ - 从陀螺数据中获取四元数。我如何获得身体坐标?
- c# - C# LINQ 如何更改数据源以及如何防止它?
- sql - Microsoft Query SQL 当前日期优化
- ubuntu - 树莓派 4 ubuntu 20.10 中的 Geopandas
- javascript - 我无法获取数组中字符串的索引并将其删除 | javascript
- java - Android中的地理围栏服务
- html - 使表格行或单元格被表格读取为可点击
- java - Spring Boot 捕获 thymeleaf 异常时重定向到错误页面