Импортируйте и запустите файл

Я немного новичок в 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)))

В представлении, которое делает работу, а также вышеупомянутый код, у меня также есть большая часть кода, который был в основном разделе исходного тестового примера

У меня есть другие вопросы \ вопросы, но этот решен

Спасибо

Грант

Другие вопросы по тегам