我是编码新手,我不明白为什么在测试用例完成后不能生成日志。
这是生成日志的代码
class LogGen:
@staticmethod
def loggen():
logging.basicConfig(filename=".\Logs\automation.log",
format='%(asctime)s: %(levelname)s: %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
logger = logging.getLogger()
logger.setLevel(logging.INFO)
return logger
这是我称之为这种方法的代码:
from selenium import webdriver
from pageObjects.storetest import store_test
from utilities.readProperties import ReadConfig
from selenium.webdriver.common.keys import Keys
import time
from utilities.customeLogger import LogGen
class Test_001_learning:
baseURL = ReadConfig.getApplicationURL()
email = ReadConfig.getUseremail()
password = ReadConfig.getPassword()
logger = LogGen.loggen()
PURCHASEPRICE = "100"
DOWNPAYMENT = "10"
HOMEINSURANCE = "10"
PROPERTYTAXES = "10"
HOADUES = "10"
def test_store(self, setup):
self.logger.info("********* Test_001_Learning ********")
self.logger.info("********* LOggin test ********")
self.driver = setup
self.driver.get(self.baseURL)
self.driver.get(self.baseURL)
self.lp = store_test(self.driver)
self.lp.setemail(self.email)
self.lp.setpassword(self.password)
self.lp.button1()
title = self.driver.title
if title == "Dashboard / nopCommerce administration":
assert True
self.logger.info("********* Test Pass ********")
else:
self.driver.save_screenshot(".\Screenshots\" + "test_calculator2.png")
assert False
self.lp.button2()
self.driver.close()
但是在测试用例完成之后,不会生成任何日志。
提前感谢!
默认情况下,pytest
用自己的日志记录配置覆盖任何自定义日志记录配置,以便捕获测试运行中发出的任何日志;这对于测试应用程序是否正确地发出日志非常有用。您可以通过关闭logging
插件来禁用此功能:
$ pytest -p no:logging ...
现在不会捕获任何日志,而是应用您自己的日志配置。
备选方案:实时日志
然而,pytest
也具有实时日志记录的整洁特性;启用后,它将捕获日志并将它们写入终端或文件,或两者兼有。因此,您可以将LogGen
替换为在pytest.ini
或pyproject.toml
中完成的配置。pyproject.toml
:示例
[tool.pytest.ini_options]
log_file = "Logs/automation.log"
log_file_level = "INFO"
log_file_format = "%(asctime)s: %(levelname)s: %(message)s"
log_file_date_format = "%m/%d/%Y %I:%M:%S %p"
在测试中,只需使用根记录器;无需在代码中配置任何内容:
class Test_001_learning:
def test_store(self):
self.logger = logging.getLogger()
self.logger.info("********* Test_001_Learning ********")
...
无耻的自我推销:查看我的另一个答案,了解更多配置示例。