生成日志Python

2024-10-03 23:30:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我对编码是新手,我不明白为什么在测试用例完成后不能生成日志

下面是生成日志的代码



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()

但是在测试用例完成后,不会生成任何日志

提前谢谢你


Tags: storefromtestimportselfinfotitlelogging
1条回答
网友
1楼 · 发布于 2024-10-03 23:30:52

默认情况下,pytest使用自己的日志配置覆盖任何自定义日志配置,以便捕获测试运行中发出的任何日志;这对于测试应用程序是否正确发送日志非常有用。您可以通过关闭logging插件来禁用此功能:

$ pytest -p no:logging ...

现在不会捕获任何日志,并应用您自己的日志配置

备选方案:实时日志

然而,pytest还有一个整洁的特性live logging;启用时,它将捕获日志将它们写入终端或文件或两者。因此,您可以使用在pytest.inipyproject.toml中完成的配置来替换LogGen。以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 ********")
        ...

无耻的自我提升:查看my other answer了解更多配置示例

相关问题 更多 >