#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"