Я использую pytest и селен. Когда я пытаюсь запустить мой тестовый скрипт:

import pytest
from selenium import webdriver
from pages import *
from locators import *
from selenium.webdriver.common.by import By
import time

class RegisterNewInstructor:
    def setup_class(cls):
        cls.driver = webdriver.Firefox()
        cls.driver.get("http://mytest.com")

    def test_01_clickBecomeTopButtom(self):
        page = HomePage(self.driver)
        page.click_become_top_button()
        self.assertTrue(page.check_instructor_form_page_loaded())


    def teardown_class(cls):
        cls.driver.close()

Появится следующее сообщение: тесты не выполнялись за 0,84 секунды .

Может ли кто-нибудь помочь мне выполнить этот простой тест?

13
Rafael C. 18 Дек 2015 в 23:22

3 ответа

Лучший ответ

Согласно pytest соглашениям о тестировании, ваш класс должен начаться с Test, который будет автоматически выбран механизмом обнаружения тестов. Назовите это TestRegisterNewInstructor вместо этого.

Или подкласс unittest.TestCase:

import unittest

class RegisterNewInstructor(unittest.TestCase):
    # ...

Также имейте в виду, что сам тестовый скрипт .py должен начинаться с test_ в его имени файла.

18
Al Sweigart 2 Май 2018 в 02:59

Попробуйте добавить @classmethod в начало setUP и tearDown.

1
Chien Huang 5 Июн 2019 в 16:24

Вы выполнили сам класс?
Я не вижу в этом коде того, что вы показываете, что вызываете класс или определения для запуска.
Например, в python вы запускаете класс или определение следующим образом:

class Hello():
    # __init__ is a definition runs itself. 
    def __init__(self): 
        print('Hello there')
        # Call another definition. 
        self.andBye()

    # This definition should be calles in order to be executed. 
    def andBye(self):
        print('Goodbye')

# Run class 
Hello()
0
Tenzin 18 Дек 2015 в 20:27