Импортируйте и запустите файл
Я немного новичок в Python, и по какой-то причине я не могу что-то обдумать.
Из командной строки я запускаю этот
python3 myfile.py
И это работает, в нижней части файла это, который запускает мой класс, бит, который запускает класс, показан ниже (я только что включил немного раздела, который вызывает остальные
if __name__ == "__main__":
dir = os.getcwd()
reportoutputpath="reports"
reportfilename=casedetails['hcname'] + ".html"
......
Что я хочу сделать, это запустить полный файл из моего кода, я попробовал это
pathforidefiles="/home/ubuntu/idefiles"
sys.path.append(pathforidefiles)
module = __import__("clean-Fern_Britton_Testcase_01")
Это похоже на чтение файла (у меня есть строка для печати прямо вверху, и это, кажется, работает, но на самом деле ничего не выполняется. Я уверен, что мне не хватает чего-то фундаментального в том, как работает Python, но я немного растерялся.
Редактировать Я думаю, что могу быть не прав, и думаю, что мой вопрос может быть. Как мне переместить то, что находится в главном разделе файла, ко мне, импортированному в файл, который выполняет импорт
Файл для импорта выглядит так
class Examplecase01(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(30)
self.base_url = "http://example.com/"
self.verificationErrors = []
self.accept_next_alert = True
def test_fern_britton_testcase01(self):
driver = self.driver
....
if __name__ == "__main__":
dir = os.getcwd()
reportoutputpath="reports"
reportfilename=casedetails['hcname'] + ".html"
outfile = open(dir + "/" + reportoutputpath + "/" + reportfilename, "w")
loader = unittest.TestLoader()
suite = unittest.TestSuite((
loader.loadTestsFromTestCase(FernBrittonTestcase01)))
runner = HTMLTestRunner(stream=outfile,
verbosity=2,
title=casedetails['hcname'],
description=casedetails['hcdescription'])
t = unittest.main(exit=False)
print (t.result)
Затем в файле, который делает импорт
mymodule=importlib.import_module('cleantest')
#code as above
t = unittest.mymodule(exit=False) #to replace t = unittest.main(exit=False)
Я получаю сообщение об ошибке: модуль 'unittest' не имеет атрибута 'mymodule'
Итак, что мне нужно сделать, чтобы мой код (который был в основном) работал на мой взгляд, который выполняет импорт?
1 ответ
После некоторых размышлений о том, что я на самом деле хотел сделать, это то, что я придумал (это работает). Я только действительно заинтересован в запуске этого с сайта, а не из командной строки
loadfile="my-py-file-that-was-created-and-exported-from-the-IDE"
sys.path.append("directory-of-where-my-test-case-is")
mymodule=importlib.import_module(loadfile)
print(mymodule.casedetails['hcversion']) #I can access values in a dict on the imported file
#the below then gets the test case from the imported file
suite = unittest.TestSuite((loader.loadTestsFromTestCase(mymodule.Testcase01)))
В представлении, которое делает работу, а также вышеупомянутый код, у меня также есть большая часть кода, который был в основном разделе исходного тестового примера
У меня есть другие вопросы \ вопросы, но этот решен
Спасибо
Грант