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

#python #class #pytest

#python #класс #pytest

Вопрос:

Прежде всего, если я неправильно сформулировал вопрос, извините, я старался изо всех сил.

Я задал вопрос час назад, но он был не на английском, и чтобы задать другой вопрос, мне пришлось ждать 40 минут. Однако мой вопрос был: как я могу создать класс, внутри которого есть тестовые примеры, используя pytest

Я провел свое исследование и нашел код, который соответствует тому, что я хочу, однако он не использует pytest, вместо этого он использует unittest, если я не объяснил себя, я приведу код, который я нашел, если это поможет в качестве примера:

 import unittest

class TestStringMethods(unittest.TestCase):

def test_upper(self):
    self.assertEqual('foo'.upper(), 'FOO')

def test_isupper(self):
    self.assertTrue('FOO'.isupper())
    self.assertFalse('Foo'.isupper())

def test_split(self):
    s = 'hello world'
    self.assertEqual(s.split(), ['hello', 'world'])
    # check that s.split fails when the separator is not a string
    with self.assertRaises(TypeError):
        s.split(2)

if __name__ == '__main__':
    unittest.main()
 

В коде, который я включил, он использует Unittest и принимает unitest.TeslaCase в качестве аргумента.
Есть ли какой-нибудь способ сделать это с помощью pytest?, чтобы вместо использования unittest я мог использовать pytest?

Заранее спасибо!!

Комментарии:

1. Вы можете просто создать любой класс (не производный ни от чего) с помощью тестов для pytest. Имя класса просто должно начинаться с Test него . Вы можете использовать тот же пример и запустить его с помощью pytest (с выводом или без него TestCase ).

2. И у него должен быть какой-либо параметр, такой как self или что-то в этом роде?

3. Если вы используете класс, вам self , конечно, нужен аргумент для методов, за исключением того, что вы делаете их статическими. Если вы не производны от TestCase , вам также необходимо заменить assertXXX assert вызовы by .

4. Я очень ценю вашу помощь!

Ответ №1:

 class Test_StringMethods():

    def test_upper(self):
        assert ('foo'.upper() == 'FOO'), "FAILED"

    def test_isupper(self):
        assert 'FOO'.isupper(), "FAILED"
        assert not 'Foo'.isupper(), "FAILED"

    def test_split(self):
        s = 'hello world'
        assert s.split() == ['hello', 'world'], "FAILED"