我正在对 selenium+python 进行一些研发。我使用 selenium webdriver 和 unittest 模块在 python 中编写了一些测试用例。我想知道如何创建测试用例的报告。selenium 中是否有内置解决方案,或者我需要编写代码来生成文件。
或者在 python 中是否有任何其他具有 javascript 支持的 Web 测试框架具有报告功能。
我基本上是 python 和 selenium 的新手。只是试图探索。
要开始在 Selenium+Python 之上构建测试报告,我将利用 python unittest 模块。您将在此处获得 Selenium 文档中的基本示例。
然后HTMLTestRunner模块结合 unittest 提供基本但健壮的 HTML 报告。
使用 HTMLTestRunner
转到以下网址:
http://tungwaiyip.info/software/HTMLTestRunner.html
示例代码:
from selenium import webdriver
import unittest
import HTMLTestRunner
class LoginTest(unittest.TestCase):
def setUp(self):
print driverpath
self.driver = webdriver.Chrome(driverpath + "chromedriver.exe")
self.driver.get("http://google.com/")
def testPythonScript(self):
driver=self.driver
driver.maximize_window()
driver.implicitly_wait(60)
driver.get_screenshot_as_file(screenshotpath + "testPngFunction.png")
driver.find_element_by_xpath("(//a[contains(@href,'contact-us')])[1]").click()
driver.find_element_by_name("name").send_keys("shubham")
driver.find_element_by_id("contactemail").send_keys("shubham.xyz@abc.com")
driver.find_element_by_css_selector("#contact_form > div:nth-child(3) > div:nth-child(3) > input").send_keys(
"389198318312")
driver.find_element_by_name("company").send_keys("myname")
driver.get_screenshot_as_file(screenshotpath + "ConatctUs.png")
print driver.title
assert "Hello" in driver.title
print "execution ends"
def testPythonFailScript(self):
driver=self.driver
driver.find_element_by_name("notExist").send_keys("done")
def tearDown(self):
driver = self.driver
driver.quit();
if __name__ == "__main__":
HTMLTestRunner.main()
现在打开终端并在命令下启动
python scriptFileName.py > TestReport.HTML
注意:scriptFileName 是 python 文件名,TestReport 是 html 报告名。你可以随意命名
我的经验是,任何足够有用的测试框架最终都需要定制的日志记录解决方案。您最终将需要特定领域和上下文相关的信息,而预烘焙的解决方案由于被专门设计为通用且广泛适用,因此永远不会真正符合要求。如果您已经在使用 Python,我建议您查看该logging
模块并学习如何编写处理程序和格式化程序。这实际上非常简单,与尝试将所需的日志记录硬塞到某个以硒为中心的模块中相比,您最终会得到更好的结果。
考虑使用机器人框架。它有一个 selenium 插件,并且机器人产生非常好的日志和报告。使用机器人,您不会直接在 python 中编写测试(不过,我想您可以)。相反,robot 是一个建立在 python 之上的基于关键字的测试系统。
Robot Framework是一个功能测试框架,它的用户可以: