diff --git a/README.md b/README.md index 7107492..afa01bb 100644 --- a/README.md +++ b/README.md @@ -12,24 +12,24 @@ ### Supported asserts: -| Assert | Description | Example | Return | -|-------------------------------------------------------------|---------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|----------------------------------------------------| -| assert_true(condition, message=None) | Verify that condition is True | soft_asserts.assert_true(a == b) | True if assertion passes, False if assertion fails | -| assert_false(condition, message=None) | Verify that condition is False | soft_asserts.assert_false(a == b) | True if assertion passes, False if assertion fails | -| assert_equal(first, second, message=None) | Verify that first is equal to second | soft_asserts.assert_equal(a, b) | True if assertion passes, False if assertion fails | -| assert_not_equal(first, second, message=None) | Verify that first is not equal to second | soft_asserts.assert_not_equal(a, b) | True if assertion passes, False if assertion fails | -| assert_is(first, second, message=None) | Verify that first and second are the same object | soft_asserts.assert_is(a, b) | True if assertion passes, False if assertion fails | -| assert_is_not(first, second, message=None) | Verify that first and second are not the same object | soft_asserts.assert_is_not(a, b) | True if assertion passes, False if assertion fails | -| assert_is_none(obj, message=None) | Verify that obj is None | soft_asserts.assert_is_none(a) | True if assertion passes, False if assertion fails | -| assert_is_not_none(obj, message=None) | Verify that obj is not None | soft_asserts.assert_is_not_none(a) | True if assertion passes, False if assertion fails | -| assert_in(obj, container, message=None) | Verify that obj is in container | soft_asserts.assert_in(a, [a, b, c]) | True if assertion passes, False if assertion fails | -| assert_not_in(obj, container, message=None) | Verify that obj is not in container | soft_asserts.assert_not_in(a, [b, c]) | True if assertion passes, False if assertion fails | -| assert_is_instance(obj, cls, message=None) | Verify that obj is instance of cls | soft_asserts.assert_is_instance(a, A) | True if assertion passes, False if assertion fails | -| assert_is_not_instance(obj, cls, message=None) | Verify that obj is not instance of cls | soft_asserts.assert_is_not_instance(a, B) | True if assertion passes, False if assertion fails | -| assert_almost_equal(first, second, delta, message=None) | Verify that first is almost equal to second
and the different is equal or less to delta | soft_asserts.assert_almost_equal(1.001, 1.002, 0.1) | True if assertion passes, False if assertion fails | -| assert_not_almost_equal(first, second, delta, message=None) | Verify that first is not almost equal to second
and the different is more than delta | soft_asserts.assert_not_almost_equal(1.001, 1.002, 0.00001) | True if assertion passes, False if assertion fails | -| assert_raises(exception, method: Callable, *args, **kwargs) | Verify that method execution raise exception | soft_asserts.assert_raises(TypeError, sum, 'a', 2) | True if assertion passes, False if assertion fails | -| assert_raises_with(exception, message=None) | Verify that execution in 'with' block raise exception | with soft_asserts.assert_raised_with(ValueError):
    raise ValueError(ERROR_MESSAGE_1) | | +| Assert | Description | Example | Return | +|-------------------------------------------------------------|-----------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|-----------------------------------------------------| +| assert_true(condition, message=None) | Verify that condition is True. | soft_asserts.assert_true(a == b) | True if assertion passes, False if assertion fails. | +| assert_false(condition, message=None) | Verify that condition is False. | soft_asserts.assert_false(a == b) | True if assertion passes, False if assertion fails. | +| assert_equal(first, second, message=None) | Verify that first is equal to second. | soft_asserts.assert_equal(a, b) | True if assertion passes, False if assertion fails. | +| assert_not_equal(first, second, message=None) | Verify that first is not equal to second. | soft_asserts.assert_not_equal(a, b) | True if assertion passes, False if assertion fails. | +| assert_is(first, second, message=None) | Verify that first and second are the same object. | soft_asserts.assert_is(a, b) | True if assertion passes, False if assertion fails. | +| assert_is_not(first, second, message=None) | Verify that first and second are not the same object. | soft_asserts.assert_is_not(a, b) | True if assertion passes, False if assertion fails. | +| assert_is_none(obj, message=None) | Verify that obj is None. | soft_asserts.assert_is_none(a) | True if assertion passes, False if assertion fails. | +| assert_is_not_none(obj, message=None) | Verify that obj is not None. | soft_asserts.assert_is_not_none(a) | True if assertion passes, False if assertion fails. | +| assert_in(obj, container, message=None) | Verify that obj is in container. | soft_asserts.assert_in(a, [a, b, c]) | True if assertion passes, False if assertion fails. | +| assert_not_in(obj, container, message=None) | Verify that obj is not in container. | soft_asserts.assert_not_in(a, [b, c]) | True if assertion passes, False if assertion fails. | +| assert_is_instance(obj, cls, message=None) | Verify that obj is instance of cls. | soft_asserts.assert_is_instance(a, A) | True if assertion passes, False if assertion fails. | +| assert_is_not_instance(obj, cls, message=None) | Verify that obj is not instance of cls. | soft_asserts.assert_is_not_instance(a, B) | True if assertion passes, False if assertion fails. | +| assert_almost_equal(first, second, delta, message=None) | Verify that first is almost equal to second,
and the different is equal or less to delta. | soft_asserts.assert_almost_equal(1.001, 1.002, 0.1) | True if assertion passes, False if assertion fails. | +| assert_not_almost_equal(first, second, delta, message=None) | Verify that first is not almost equal to second,
and the different is more than delta. | soft_asserts.assert_not_almost_equal(1.001, 1.002, 0.00001) | True if assertion passes, False if assertion fails. | +| assert_raises(exception, method: Callable, *args, **kwargs) | Verify that method execution raise exception. | soft_asserts.assert_raises(TypeError, sum, 'a', 2) | True if assertion passes, False if assertion fails. | +| assert_raises_with(exception, message=None) | Verify that execution in 'with' block raise exception. | with soft_asserts.assert_raised_with(ValueError):
    raise ValueError(ERROR_MESSAGE_1) | | In the end of each test, the soft asserts will be verified and the test will be marked as failed if any of the asserts failed.
@@ -109,13 +109,15 @@ def test_skip_if_step_2_fail(): #### Print error on each failed assert Each assertion failure can be printed.
-This can be done by adding logger or by adding a print method.

+This can be done by adding logger or by adding a print method.
In case a logger will be added to soft asserts, then logger.error(message) will be used.
-In case a print method will be added to soft asserts, then print_method(message) will be used.

+In case a print method will be added to soft asserts, then print_method(message) will be used.
-_logger and print method cannot be added together._

+#### Error format + +`message [file_path: line_number] code_line` #### logger example: diff --git a/RELEASE.md b/RELEASE.md index b84a12f..5c1a5bd 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,5 +1,11 @@ # nrt-pytest-soft-asserts +## Version 1.1.0 + +### New features: + +Error message is in `message [file_path: line_number] code_line` format. + ## Version 1.0.9 Support in latest version of pytest. diff --git a/coverage_report/lcov.info b/coverage_report/lcov.info index 61d782c..3cd71ca 100644 --- a/coverage_report/lcov.info +++ b/coverage_report/lcov.info @@ -1,260 +1,282 @@ TN: SF:nrt_pytest_soft_asserts\soft_asserts.py -DA:1,1,7HpIEQVf5K0efdTzo05mJg -DA:2,1,YOe9avog2o7Ju8MeMAAAVQ -DA:5,1,CT9XrugR0VmgtyLiirko8A -DA:6,1,UWMFjPhL9cjw2PNid09Teg -DA:7,1,+SGCpVWY58FgRVOVeHAUaQ -DA:8,1,hrAqVZ4+nJDfZWiyo7USPQ -DA:11,1,VWrOtSvpsG3XM/+ldlYTtw -DA:12,1,/ZvqiDY7XVzMiSFdpC6ZCg -DA:18,1,nbKTbmHFx7nM+aMlyHoQuQ -DA:19,1,cZwl7SZ7Og3/jQc9chklaw -DA:20,1,o/ICqHT57VM1Vq7HjJyy3A -DA:21,1,8gMV8dVZf8YNcIeIuAT9mg -DA:22,1,X04jIckKz8MzqNgMEd/zuQ -DA:24,1,gFdnwIzxJ64X+nD2UauP7A -DA:25,1,euNjmfcAJnt/3VzkyXBypw -DA:26,1,VoZlPxzJT8iSDla3nXg6gA -DA:28,1,w/qRhPKePx2X8WQ5IFwHQw -DA:29,1,wLAvyX6ae7qHPfR0U5nuNQ -DA:31,1,xZzMcn+sbVdMvp1XWeSE3A -DA:32,1,TCKiqpktFcWqlWOlIXkr/Q -DA:34,1,2feaP53LICTkUXoufDnSow -DA:35,1,UNg5Tja4vJsKufLKzB/kig -DA:36,1,cF/F8prOxehBDvWes+tMMg -DA:37,1,SddcyX1RBTAngKzlGAFzog -DA:38,1,kycMaH6XbPuAfUpgfG1Lbg -DA:40,1,eJ6zrxnLWn/k18a2vHOhRA -DA:42,1,s1bL95czphICJYesf40P0g -DA:43,1,SVjSWEY0bM8LLJH3qp/3Og -DA:44,1,BSDSyrd28WloFCHGdn2FQQ -DA:45,1,SddcyX1RBTAngKzlGAFzog -DA:46,1,kycMaH6XbPuAfUpgfG1Lbg -DA:48,1,eJ6zrxnLWn/k18a2vHOhRA -DA:50,1,a9xTv53C92gEOcB2C7sang -DA:51,1,fPOM4pkCeXOfL2Nmu5oikw -DA:52,1,KTOM1IoHRdymNOi2MOrfow -DA:53,1,SddcyX1RBTAngKzlGAFzog -DA:54,1,kycMaH6XbPuAfUpgfG1Lbg -DA:56,1,eJ6zrxnLWn/k18a2vHOhRA -DA:58,1,c/GTJITtfeL5VVJmP7cM4A -DA:59,1,cs5FkiD5nnhu8NJ+8Cen0g -DA:60,1,MMzR/4FNHLQDvhbSfEhRjg -DA:61,1,SddcyX1RBTAngKzlGAFzog -DA:62,1,kycMaH6XbPuAfUpgfG1Lbg -DA:64,1,eJ6zrxnLWn/k18a2vHOhRA -DA:66,1,wzaRxf7eNUIkALABgtSBOg -DA:67,1,TJY/ZQHPl6v9wt0iiFUHgA -DA:68,1,ByiK0QTfZbN7pcEJMLnKnA -DA:69,1,SddcyX1RBTAngKzlGAFzog -DA:70,1,kycMaH6XbPuAfUpgfG1Lbg -DA:72,1,eJ6zrxnLWn/k18a2vHOhRA -DA:74,1,ohnxQgVjMajng4B983+dOQ -DA:75,1,caD9Ne8dKQaQHLzB/bHx1A -DA:76,1,x9Djg3dmtnNgOW88ewk5Gw -DA:77,1,SddcyX1RBTAngKzlGAFzog -DA:78,1,kycMaH6XbPuAfUpgfG1Lbg -DA:80,1,eJ6zrxnLWn/k18a2vHOhRA -DA:82,1,aGNyC4j4/11W0ojkq1MItg -DA:83,1,HOBRRotEGUH3HEJEbr0YUA -DA:84,1,vZnC+h5JTs752xY6owGb4g -DA:85,1,SddcyX1RBTAngKzlGAFzog -DA:86,1,kycMaH6XbPuAfUpgfG1Lbg -DA:88,1,eJ6zrxnLWn/k18a2vHOhRA -DA:90,1,nDajlSGkW4YMvTZoO+q+ug -DA:91,1,EGNruTy0X+Kp9Jkg/flHiw -DA:92,1,Ob0eQ+a3YhRVJHOBXnjrRA -DA:93,1,SddcyX1RBTAngKzlGAFzog -DA:94,1,kycMaH6XbPuAfUpgfG1Lbg -DA:96,1,eJ6zrxnLWn/k18a2vHOhRA -DA:98,1,BgltoEotRwyRJFO8ekhLJA -DA:99,1,UxwR8N+Yj6i7HYMpbMepww -DA:100,1,RzRBmIy8MpMoehK51SMnPA -DA:101,1,SddcyX1RBTAngKzlGAFzog -DA:102,1,kycMaH6XbPuAfUpgfG1Lbg -DA:104,1,eJ6zrxnLWn/k18a2vHOhRA -DA:106,1,HKL+A4SYWO42UDwPBqF9/Q -DA:107,1,hUWpochcPK4BW5vofnIyIQ -DA:108,1,y+St3rSnijDiXGKMyWbmzQ -DA:109,1,SddcyX1RBTAngKzlGAFzog -DA:110,1,kycMaH6XbPuAfUpgfG1Lbg -DA:112,1,eJ6zrxnLWn/k18a2vHOhRA -DA:114,1,Me1jgvIGrsr4qnriHUjthg -DA:115,1,hMZeVjp7IQfEeIhu7T6Qug -DA:116,1,Xul9OhdjYz634dcls+D5Sg -DA:117,1,SddcyX1RBTAngKzlGAFzog -DA:118,1,kycMaH6XbPuAfUpgfG1Lbg -DA:120,1,eJ6zrxnLWn/k18a2vHOhRA -DA:122,1,Tp9UPj/6BSBU3OiLKVehTQ -DA:123,1,LEr6iS1ehZPEln0938LgDA -DA:124,1,7CSN9PHZE0v8HuRE7SFpHQ -DA:125,1,SddcyX1RBTAngKzlGAFzog -DA:126,1,kycMaH6XbPuAfUpgfG1Lbg -DA:128,1,eJ6zrxnLWn/k18a2vHOhRA -DA:130,1,jt1nVjofbe6seP/zpYulag -DA:131,1,ABp2lMt/GqraddSKyQroNg -DA:132,1,Gl3BECggWbqqjd2cqP4bRw -DA:133,1,SddcyX1RBTAngKzlGAFzog -DA:134,1,kycMaH6XbPuAfUpgfG1Lbg -DA:136,1,eJ6zrxnLWn/k18a2vHOhRA -DA:138,1,FOJoFrDX8goW8TK04Am1gg -DA:139,1,BEji8rHRRQd6Khq3M6eG1A -DA:140,1,OkhVZVE4+qXfT2qlBfFMCg -DA:141,1,SddcyX1RBTAngKzlGAFzog -DA:142,1,kycMaH6XbPuAfUpgfG1Lbg -DA:144,1,eJ6zrxnLWn/k18a2vHOhRA -DA:146,1,7Id/9w+MJ7mmStv5GmlnEQ -DA:147,1,xjcDBnSwra0OiNOAYAwoHA -DA:148,1,fzgfIgcG6g+2bwqhpFlehA -DA:149,1,1bm+6DR9CmDHJRc1CVEkAA -DA:150,1,SddcyX1RBTAngKzlGAFzog -DA:151,1,kycMaH6XbPuAfUpgfG1Lbg -DA:152,1,cCzhnT+1tmGi11b28Pmfwg -DA:153,1,FFqRFcnwn5yIyeIymeaJKA -DA:154,1,cHkzfZuxAWImImgqWlqrvA -DA:155,1,BPFPHxC1g838zXudSH9ZRw -DA:156,1,7N/JFuOs+JgNw/t49ouLjw -DA:158,1,eJ6zrxnLWn/k18a2vHOhRA -DA:160,1,7b0pW+COted0848FtuVb6w -DA:161,1,5q+soJGeT4wj2rvA0ImJjw -DA:162,1,oGXcTu7RhYjXaCN+oyGeow -DA:163,1,WLm2H1W+3yCdma2u9U4Q8Q -DA:165,1,NgEyPOKakdhldTxcO/9WTw -DA:166,1,9tjsd4fQsN3iZRwF3XVokQ -DA:167,1,jVibu8inmyhUmI99MXh8cQ -DA:169,1,qCY/j2HCLFtYyfrTwAWWTA -DA:170,1,Lfip+xp+akrfc/rJIcMOhA -DA:172,1,KUmQB5oU4NORV0lSdMIZZQ -DA:173,1,dAfL0n8Wo5Ppew0jXSR2ew -DA:174,1,DSI4Ot1H4VotwCjdGHX7OA -DA:175,1,tQ6XNUsbh/EhqDe2FXTfEQ -DA:176,1,MxcyyJW2FDs9bItTe2A0WQ -DA:177,1,niU61jbEbVCIu9EZqALWTw -DA:178,1,tQ6XNUsbh/EhqDe2FXTfEQ -DA:180,1,n05AfdIFALNK7eRaTWeHow -DA:182,1,0d4Sudq2J47ghEvQaeqPWg -DA:184,1,kVvJCoZ+arOc3lZ+og4IEg -DA:190,1,ogP0iNXJ2rXGUSaYFfx0HQ -DA:192,1,rKc6OtluApu4vUPkue80OA -DA:193,1,51oFRiFZA8XRplZCPT+gSA -DA:194,1,D+1gEQAN6fkTn2TYmA0kkQ -DA:196,1,cNL8bb7c9LibXQYEYcASDg -DA:201,1,IPjK7F9pnamTy2HfVi2mgA -DA:203,1,GjfNc4UJIb1+ODEoT4Hajw -DA:204,1,jv3zm1wOeBalyM4h/jcIlw -DA:206,1,MZYNNYkbtsx2Hg+DZ/h3rg -DA:207,1,UgfgQM6wxrSfJ+EcPxgD7Q -DA:209,1,HmADa1g/W1C2Vo9Wm4sNNA -DA:210,1,YZHh1zdnsa3bb+dCKtCLig -DA:211,1,tWBXudt5bV+DpuYf1ygf2g -DA:213,1,HmADa1g/W1C2Vo9Wm4sNNA -DA:214,1,IGhNwPBj/a1FDMfnrvNhxA -DA:215,1,Lmo1GBciEu5kMSFvKCB7QA -DA:217,1,B+mxYdm1Xk4QgBlIJzGpEA -DA:218,1,/ZJ79mb3sx4CFjKob6BxSg -DA:219,1,jJxyxzcVU/1lqNaNLAC6ww -DA:221,1,Wd4o5epo//51J+v3mzza3g -DA:222,1,vDeONdWNzGB1bPJZokLllA -DA:223,1,/Lct/aa+gRDnOrNcSDT0ZA -DA:225,1,Nnqu9X+lU2lagW39QNhFWA -DA:226,1,143uiKojxDtCstS6tDiQ5A -DA:227,1,Ahj3u1JF+byhc08crW0QLQ -DA:229,1,mNeFbVseW/qARC32FDxTEQ -DA:230,1,acMBX5l1srZ491NxjonaeA -DA:231,1,vmrz1EiRGmh1MNZlc7IsNQ -DA:232,1,vtZuiIh5DSDD2AlHVYOVKw -DA:234,1,Nnqu9X+lU2lagW39QNhFWA -DA:235,1,NmqLPZ3fyfxpCRHbaSiJOQ -DA:236,1,IrKsTNk7dtBPez/9W/Qj+g -DA:237,1,iecXh0RffNZfyyBKrCOmrA -DA:239,1,Nnqu9X+lU2lagW39QNhFWA -DA:240,1,Jb45BMi1721wc8ypt23M6g -DA:241,1,XceuZSE58kAuwRkXfCz3mg -DA:243,1,Nnqu9X+lU2lagW39QNhFWA -DA:244,1,AnuWxAUDyCmMczt8tp7TBw -DA:245,1,n4NDUGewH3j5dzwolDzf5A -DA:247,1,Nnqu9X+lU2lagW39QNhFWA -DA:248,1,uk5+o+CCjDLLIkm9IQLPtQ -DA:249,1,Yv5hMrZtSl+2+8NtPWsDLw -DA:251,1,Nnqu9X+lU2lagW39QNhFWA -DA:252,1,GflCFTf20x0JWupDDMETJA -DA:253,1,q0wIMUlz3srDH0Lg+BK9mA -DA:255,1,Nnqu9X+lU2lagW39QNhFWA -DA:256,1,FfYeIxYuJuJRN5k6/K6Y7Q -DA:257,1,1dqIY04d+M/CQT9EZGY5Fw -LF:182 -LH:182 -BRDA:6,0,0,1 -BRDA:7,0,1,1 -BRDA:36,1,0,1 -BRDA:40,1,1,1 -BRDA:44,2,0,1 -BRDA:48,2,1,1 -BRDA:52,3,0,1 -BRDA:56,3,1,1 -BRDA:60,4,0,1 -BRDA:64,4,1,1 -BRDA:68,5,0,1 -BRDA:72,5,1,1 -BRDA:76,6,0,1 -BRDA:80,6,1,1 -BRDA:84,7,0,1 -BRDA:88,7,1,1 -BRDA:92,8,0,1 -BRDA:96,8,1,1 -BRDA:100,9,0,1 -BRDA:104,9,1,1 -BRDA:108,10,0,1 -BRDA:112,10,1,1 -BRDA:116,11,0,1 -BRDA:120,11,1,1 -BRDA:124,12,0,1 -BRDA:128,12,1,1 -BRDA:132,13,0,1 -BRDA:136,13,1,1 -BRDA:140,14,0,1 -BRDA:144,14,1,1 -BRDA:154,15,0,1 -BRDA:158,15,1,1 -BRDA:174,16,0,1 -BRDA:176,16,1,1 -BRDA:177,17,0,1 -BRDA:180,17,1,1 +DA:1,1,Lhk5d8oicIJYwDoccMDdHg +DA:2,1,7Z9Lj4ed27Wf2hBX6jooEA +DA:3,1,7HpIEQVf5K0efdTzo05mJg +DA:4,1,YOe9avog2o7Ju8MeMAAAVQ +DA:5,1,o7XN3CMj67n397EmDP0M3w +DA:8,1,CT9XrugR0VmgtyLiirko8A +DA:9,1,UWMFjPhL9cjw2PNid09Teg +DA:10,1,+SGCpVWY58FgRVOVeHAUaQ +DA:11,1,hrAqVZ4+nJDfZWiyo7USPQ +DA:12,1,qbcWZTaHHkFMNzZLiRiJWg +DA:13,1,x58qBQiiUN5gSgkjvQMEsA +DA:14,1,sRjzUmZYGNMCGdE1QaJWlg +DA:16,1,j+CcxAIEiLeqjzkbiEHnZA +DA:17,1,h0T4olR8leEmpUnX6jQ87w +DA:21,1,VWrOtSvpsG3XM/+ldlYTtw +DA:22,1,/ZvqiDY7XVzMiSFdpC6ZCg +DA:28,1,nbKTbmHFx7nM+aMlyHoQuQ +DA:29,1,cZwl7SZ7Og3/jQc9chklaw +DA:30,1,o/ICqHT57VM1Vq7HjJyy3A +DA:31,1,8gMV8dVZf8YNcIeIuAT9mg +DA:32,1,X04jIckKz8MzqNgMEd/zuQ +DA:34,1,gFdnwIzxJ64X+nD2UauP7A +DA:35,1,euNjmfcAJnt/3VzkyXBypw +DA:36,1,VoZlPxzJT8iSDla3nXg6gA +DA:38,1,w/qRhPKePx2X8WQ5IFwHQw +DA:39,1,wLAvyX6ae7qHPfR0U5nuNQ +DA:41,1,xZzMcn+sbVdMvp1XWeSE3A +DA:42,1,TCKiqpktFcWqlWOlIXkr/Q +DA:44,1,2feaP53LICTkUXoufDnSow +DA:45,1,UNg5Tja4vJsKufLKzB/kig +DA:46,1,cF/F8prOxehBDvWes+tMMg +DA:47,1,SddcyX1RBTAngKzlGAFzog +DA:48,1,kycMaH6XbPuAfUpgfG1Lbg +DA:50,1,eJ6zrxnLWn/k18a2vHOhRA +DA:52,1,s1bL95czphICJYesf40P0g +DA:53,1,SVjSWEY0bM8LLJH3qp/3Og +DA:54,1,BSDSyrd28WloFCHGdn2FQQ +DA:55,1,SddcyX1RBTAngKzlGAFzog +DA:56,1,kycMaH6XbPuAfUpgfG1Lbg +DA:58,1,eJ6zrxnLWn/k18a2vHOhRA +DA:60,1,a9xTv53C92gEOcB2C7sang +DA:61,1,fPOM4pkCeXOfL2Nmu5oikw +DA:62,1,KTOM1IoHRdymNOi2MOrfow +DA:63,1,SddcyX1RBTAngKzlGAFzog +DA:64,1,kycMaH6XbPuAfUpgfG1Lbg +DA:66,1,eJ6zrxnLWn/k18a2vHOhRA +DA:68,1,c/GTJITtfeL5VVJmP7cM4A +DA:69,1,cs5FkiD5nnhu8NJ+8Cen0g +DA:70,1,MMzR/4FNHLQDvhbSfEhRjg +DA:71,1,SddcyX1RBTAngKzlGAFzog +DA:72,1,kycMaH6XbPuAfUpgfG1Lbg +DA:74,1,eJ6zrxnLWn/k18a2vHOhRA +DA:76,1,wzaRxf7eNUIkALABgtSBOg +DA:77,1,TJY/ZQHPl6v9wt0iiFUHgA +DA:78,1,ByiK0QTfZbN7pcEJMLnKnA +DA:79,1,SddcyX1RBTAngKzlGAFzog +DA:80,1,kycMaH6XbPuAfUpgfG1Lbg +DA:82,1,eJ6zrxnLWn/k18a2vHOhRA +DA:84,1,ohnxQgVjMajng4B983+dOQ +DA:85,1,caD9Ne8dKQaQHLzB/bHx1A +DA:86,1,x9Djg3dmtnNgOW88ewk5Gw +DA:87,1,SddcyX1RBTAngKzlGAFzog +DA:88,1,kycMaH6XbPuAfUpgfG1Lbg +DA:90,1,eJ6zrxnLWn/k18a2vHOhRA +DA:92,1,aGNyC4j4/11W0ojkq1MItg +DA:93,1,HOBRRotEGUH3HEJEbr0YUA +DA:94,1,vZnC+h5JTs752xY6owGb4g +DA:95,1,SddcyX1RBTAngKzlGAFzog +DA:96,1,kycMaH6XbPuAfUpgfG1Lbg +DA:98,1,eJ6zrxnLWn/k18a2vHOhRA +DA:100,1,nDajlSGkW4YMvTZoO+q+ug +DA:101,1,EGNruTy0X+Kp9Jkg/flHiw +DA:102,1,Ob0eQ+a3YhRVJHOBXnjrRA +DA:103,1,SddcyX1RBTAngKzlGAFzog +DA:104,1,kycMaH6XbPuAfUpgfG1Lbg +DA:106,1,eJ6zrxnLWn/k18a2vHOhRA +DA:108,1,BgltoEotRwyRJFO8ekhLJA +DA:109,1,UxwR8N+Yj6i7HYMpbMepww +DA:110,1,RzRBmIy8MpMoehK51SMnPA +DA:111,1,SddcyX1RBTAngKzlGAFzog +DA:112,1,kycMaH6XbPuAfUpgfG1Lbg +DA:114,1,eJ6zrxnLWn/k18a2vHOhRA +DA:116,1,HKL+A4SYWO42UDwPBqF9/Q +DA:117,1,hUWpochcPK4BW5vofnIyIQ +DA:118,1,y+St3rSnijDiXGKMyWbmzQ +DA:119,1,SddcyX1RBTAngKzlGAFzog +DA:120,1,kycMaH6XbPuAfUpgfG1Lbg +DA:122,1,eJ6zrxnLWn/k18a2vHOhRA +DA:124,1,Me1jgvIGrsr4qnriHUjthg +DA:125,1,hMZeVjp7IQfEeIhu7T6Qug +DA:126,1,Xul9OhdjYz634dcls+D5Sg +DA:127,1,SddcyX1RBTAngKzlGAFzog +DA:128,1,kycMaH6XbPuAfUpgfG1Lbg +DA:130,1,eJ6zrxnLWn/k18a2vHOhRA +DA:132,1,Tp9UPj/6BSBU3OiLKVehTQ +DA:133,1,LEr6iS1ehZPEln0938LgDA +DA:134,1,7CSN9PHZE0v8HuRE7SFpHQ +DA:135,1,SddcyX1RBTAngKzlGAFzog +DA:136,1,kycMaH6XbPuAfUpgfG1Lbg +DA:138,1,eJ6zrxnLWn/k18a2vHOhRA +DA:140,1,jt1nVjofbe6seP/zpYulag +DA:141,1,ABp2lMt/GqraddSKyQroNg +DA:142,1,Gl3BECggWbqqjd2cqP4bRw +DA:143,1,SddcyX1RBTAngKzlGAFzog +DA:144,1,kycMaH6XbPuAfUpgfG1Lbg +DA:146,1,eJ6zrxnLWn/k18a2vHOhRA +DA:148,1,FOJoFrDX8goW8TK04Am1gg +DA:149,1,BEji8rHRRQd6Khq3M6eG1A +DA:150,1,OkhVZVE4+qXfT2qlBfFMCg +DA:151,1,SddcyX1RBTAngKzlGAFzog +DA:152,1,kycMaH6XbPuAfUpgfG1Lbg +DA:154,1,eJ6zrxnLWn/k18a2vHOhRA +DA:156,1,7Id/9w+MJ7mmStv5GmlnEQ +DA:157,1,xjcDBnSwra0OiNOAYAwoHA +DA:158,1,fzgfIgcG6g+2bwqhpFlehA +DA:159,1,1bm+6DR9CmDHJRc1CVEkAA +DA:160,1,SddcyX1RBTAngKzlGAFzog +DA:161,1,kycMaH6XbPuAfUpgfG1Lbg +DA:162,1,cCzhnT+1tmGi11b28Pmfwg +DA:163,1,FFqRFcnwn5yIyeIymeaJKA +DA:164,1,cHkzfZuxAWImImgqWlqrvA +DA:165,1,BPFPHxC1g838zXudSH9ZRw +DA:166,1,7N/JFuOs+JgNw/t49ouLjw +DA:168,1,eJ6zrxnLWn/k18a2vHOhRA +DA:170,1,7b0pW+COted0848FtuVb6w +DA:171,1,5q+soJGeT4wj2rvA0ImJjw +DA:172,1,oGXcTu7RhYjXaCN+oyGeow +DA:173,1,WLm2H1W+3yCdma2u9U4Q8Q +DA:175,1,NgEyPOKakdhldTxcO/9WTw +DA:176,1,9tjsd4fQsN3iZRwF3XVokQ +DA:177,1,jVibu8inmyhUmI99MXh8cQ +DA:179,1,qCY/j2HCLFtYyfrTwAWWTA +DA:180,1,Lfip+xp+akrfc/rJIcMOhA +DA:182,1,KUmQB5oU4NORV0lSdMIZZQ +DA:183,1,dAfL0n8Wo5Ppew0jXSR2ew +DA:184,1,DSI4Ot1H4VotwCjdGHX7OA +DA:185,1,tQ6XNUsbh/EhqDe2FXTfEQ +DA:186,1,MxcyyJW2FDs9bItTe2A0WQ +DA:187,1,niU61jbEbVCIu9EZqALWTw +DA:188,1,tQ6XNUsbh/EhqDe2FXTfEQ +DA:190,1,n05AfdIFALNK7eRaTWeHow +DA:192,1,0d4Sudq2J47ghEvQaeqPWg +DA:194,1,kVvJCoZ+arOc3lZ+og4IEg +DA:200,1,ogP0iNXJ2rXGUSaYFfx0HQ +DA:202,1,rKc6OtluApu4vUPkue80OA +DA:203,1,51oFRiFZA8XRplZCPT+gSA +DA:204,1,D+1gEQAN6fkTn2TYmA0kkQ +DA:206,1,cNL8bb7c9LibXQYEYcASDg +DA:211,1,NXnbOz6yv8VObuskZ3a09w +DA:213,1,4Ai509LeMB+eQOSsyF0ceg +DA:215,1,GjfNc4UJIb1+ODEoT4Hajw +DA:216,1,jv3zm1wOeBalyM4h/jcIlw +DA:218,1,MZYNNYkbtsx2Hg+DZ/h3rg +DA:219,1,UgfgQM6wxrSfJ+EcPxgD7Q +DA:221,1,HmADa1g/W1C2Vo9Wm4sNNA +DA:222,1,YZHh1zdnsa3bb+dCKtCLig +DA:223,1,tWBXudt5bV+DpuYf1ygf2g +DA:225,1,HmADa1g/W1C2Vo9Wm4sNNA +DA:226,1,IGhNwPBj/a1FDMfnrvNhxA +DA:227,1,Lmo1GBciEu5kMSFvKCB7QA +DA:229,1,B+mxYdm1Xk4QgBlIJzGpEA +DA:230,1,/ZJ79mb3sx4CFjKob6BxSg +DA:231,1,jJxyxzcVU/1lqNaNLAC6ww +DA:233,1,Wd4o5epo//51J+v3mzza3g +DA:235,1,uzhXwjJ9NZwxd4KflQkJjQ +DA:238,1,yv59v8KaHavQluMyO7xT6Q +DA:246,1,lbiZZRg9xYxeN8jnTZGJ9g +DA:248,1,Rh+Fq7Y20+rrlbzMDYLgcQ +DA:250,1,Nnqu9X+lU2lagW39QNhFWA +DA:251,1,kF5iB3hgBW8WnyoggLwmfg +DA:252,1,Ahj3u1JF+byhc08crW0QLQ +DA:254,1,vNNTgt7R+e4BwFXobGtOlQ +DA:256,1,mNeFbVseW/qARC32FDxTEQ +DA:257,1,acMBX5l1srZ491NxjonaeA +DA:258,1,vmrz1EiRGmh1MNZlc7IsNQ +DA:259,1,vtZuiIh5DSDD2AlHVYOVKw +DA:261,1,Nnqu9X+lU2lagW39QNhFWA +DA:262,1,NmqLPZ3fyfxpCRHbaSiJOQ +DA:263,1,IrKsTNk7dtBPez/9W/Qj+g +DA:264,1,iecXh0RffNZfyyBKrCOmrA +DA:266,1,Nnqu9X+lU2lagW39QNhFWA +DA:267,1,Jb45BMi1721wc8ypt23M6g +DA:268,1,XceuZSE58kAuwRkXfCz3mg +DA:270,1,Nnqu9X+lU2lagW39QNhFWA +DA:271,1,AnuWxAUDyCmMczt8tp7TBw +DA:272,1,n4NDUGewH3j5dzwolDzf5A +DA:274,1,Nnqu9X+lU2lagW39QNhFWA +DA:275,1,uk5+o+CCjDLLIkm9IQLPtQ +DA:276,1,Yv5hMrZtSl+2+8NtPWsDLw +DA:278,1,Nnqu9X+lU2lagW39QNhFWA +DA:279,1,GflCFTf20x0JWupDDMETJA +DA:280,1,q0wIMUlz3srDH0Lg+BK9mA +DA:282,1,Nnqu9X+lU2lagW39QNhFWA +DA:283,1,FfYeIxYuJuJRN5k6/K6Y7Q +DA:284,1,1dqIY04d+M/CQT9EZGY5Fw +DA:286,1,Nnqu9X+lU2lagW39QNhFWA +DA:287,1,EmQ+hxBlgQKFFnT9CP0d5Q +DA:288,1,wGa+SQn8bApFMeivn0kWYA +DA:289,1,rhh+0om3ksyfSzaGY9Tk0A +DA:290,1,3/vpxbGaiug1MaL3IlGbdg +DA:291,1,hKnFetzAAHrF5+pb/rogiw +DA:292,1,8D0ZFuVO1joTZliocqancg +DA:294,1,jJR6mVBBc4GHpLqW+Cu+AA +LF:202 +LH:202 +BRDA:9,0,0,1 +BRDA:10,0,1,1 +BRDA:46,1,0,1 +BRDA:50,1,1,1 +BRDA:54,2,0,1 +BRDA:58,2,1,1 +BRDA:62,3,0,1 +BRDA:66,3,1,1 +BRDA:70,4,0,1 +BRDA:74,4,1,1 +BRDA:78,5,0,1 +BRDA:82,5,1,1 +BRDA:86,6,0,1 +BRDA:90,6,1,1 +BRDA:94,7,0,1 +BRDA:98,7,1,1 +BRDA:102,8,0,1 +BRDA:106,8,1,1 +BRDA:110,9,0,1 +BRDA:114,9,1,1 +BRDA:118,10,0,1 +BRDA:122,10,1,1 +BRDA:126,11,0,1 +BRDA:130,11,1,1 +BRDA:134,12,0,1 +BRDA:138,12,1,1 +BRDA:142,13,0,1 +BRDA:146,13,1,1 +BRDA:150,14,0,1 +BRDA:154,14,1,1 +BRDA:164,15,0,1 +BRDA:168,15,1,1 +BRDA:184,16,0,1 +BRDA:186,16,1,1 +BRDA:187,17,0,1 +BRDA:190,17,1,1 BRDA:0,18,0,1 -BRDA:193,18,1,1 +BRDA:203,18,1,1 BRDA:0,19,0,1 -BRDA:196,19,1,1 -BRDA:201,19,2,1 +BRDA:206,19,1,1 +BRDA:211,19,2,1 BRDA:0,20,0,1 -BRDA:0,20,1,1 -BRDA:201,20,2,1 -BRDA:209,21,0,1 -BRDA:213,21,1,1 -BRDA:213,22,0,1 -BRDA:217,22,1,1 -BRDA:217,23,0,1 -BRDA:221,23,1,1 -BRDA:225,24,0,1 -BRDA:234,24,1,1 -BRDA:230,25,0,1 -BRDA:231,25,1,1 +BRDA:211,20,1,1 +BRDA:213,20,2,1 +BRDA:221,21,0,1 +BRDA:225,21,1,1 +BRDA:225,22,0,1 +BRDA:229,22,1,1 +BRDA:229,23,0,1 +BRDA:233,23,1,1 +BRDA:250,24,0,1 +BRDA:261,24,1,1 +BRDA:257,25,0,1 +BRDA:258,25,1,1 BRDA:0,26,0,1 -BRDA:232,26,1,1 -BRDA:234,27,0,1 -BRDA:239,27,1,1 +BRDA:259,26,1,1 +BRDA:261,27,0,1 +BRDA:266,27,1,1 BRDA:0,28,0,1 -BRDA:237,28,1,1 -BRDA:239,29,0,1 -BRDA:243,29,1,1 -BRDA:243,30,0,1 -BRDA:247,30,1,1 -BRDA:247,31,0,1 -BRDA:251,31,1,1 -BRDA:251,32,0,1 -BRDA:255,32,1,1 -BRDA:0,33,0,1 -BRDA:255,33,1,1 -BRF:68 -BRH:68 +BRDA:264,28,1,1 +BRDA:266,29,0,1 +BRDA:270,29,1,1 +BRDA:270,30,0,1 +BRDA:274,30,1,1 +BRDA:274,31,0,1 +BRDA:278,31,1,1 +BRDA:278,32,0,1 +BRDA:282,32,1,1 +BRDA:282,33,0,1 +BRDA:286,33,1,1 +BRDA:0,34,0,1 +BRDA:286,34,1,1 +BRF:70 +BRH:70 end_of_record diff --git a/coverage_report/report.json b/coverage_report/report.json index e2cc579..246844c 100644 --- a/coverage_report/report.json +++ b/coverage_report/report.json @@ -1,7 +1,7 @@ { "meta": { "version": "7.3.0", - "timestamp": "2024-06-18T22:56:16.521498", + "timestamp": "2024-07-05T00:10:59.584203", "branch_coverage": true, "show_contexts": false }, @@ -10,156 +10,156 @@ "executed_lines": [ 1, 2, + 3, + 4, 5, - 6, - 7, 8, + 9, + 10, 11, 12, - 18, - 19, - 20, + 13, + 14, + 16, + 17, 21, 22, - 24, - 25, - 26, 28, 29, + 30, 31, 32, 34, 35, 36, - 37, 38, - 40, + 39, + 41, 42, - 43, 44, 45, 46, + 47, 48, 50, - 51, 52, 53, 54, + 55, 56, 58, - 59, 60, 61, 62, + 63, 64, 66, - 67, 68, 69, 70, + 71, 72, 74, - 75, 76, 77, 78, + 79, 80, 82, - 83, 84, 85, 86, + 87, 88, 90, - 91, 92, 93, 94, + 95, 96, 98, - 99, 100, 101, 102, + 103, 104, 106, - 107, 108, 109, 110, + 111, 112, 114, - 115, 116, 117, 118, + 119, 120, 122, - 123, 124, 125, 126, + 127, 128, 130, - 131, 132, 133, 134, + 135, 136, 138, - 139, 140, 141, 142, + 143, 144, 146, - 147, 148, 149, 150, 151, 152, - 153, 154, - 155, 156, + 157, 158, + 159, 160, 161, 162, 163, + 164, 165, 166, - 167, - 169, + 168, 170, + 171, 172, 173, - 174, 175, 176, 177, - 178, + 179, 180, 182, + 183, 184, + 185, + 186, + 187, + 188, 190, 192, - 193, 194, - 196, - 201, + 200, + 202, 203, 204, 206, - 207, - 209, - 210, 211, 213, - 214, 215, - 217, + 216, 218, 219, 221, @@ -171,336 +171,364 @@ 229, 230, 231, - 232, - 234, + 233, 235, - 236, - 237, - 239, - 240, - 241, - 243, - 244, - 245, - 247, + 238, + 246, 248, - 249, + 250, 251, 252, - 253, - 255, + 254, 256, - 257 + 257, + 258, + 259, + 261, + 262, + 263, + 264, + 266, + 267, + 268, + 270, + 271, + 272, + 274, + 275, + 276, + 278, + 279, + 280, + 282, + 283, + 284, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 294 ], "summary": { - "covered_lines": 182, - "num_statements": 182, + "covered_lines": 202, + "num_statements": 202, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, - "num_branches": 68, + "num_branches": 70, "num_partial_branches": 0, - "covered_branches": 68, + "covered_branches": 70, "missing_branches": 0 }, "missing_lines": [], "excluded_lines": [], "executed_branches": [ [ - 5, - 6 + 8, + 9 ], [ - 5, - 7 + 8, + 10 ], [ - 35, - 36 + 45, + 46 ], [ - 35, - 40 + 45, + 50 ], [ - 43, - 44 + 53, + 54 ], [ - 43, - 48 + 53, + 58 ], [ - 51, - 52 + 61, + 62 ], [ - 51, - 56 + 61, + 66 ], [ - 59, - 60 + 69, + 70 ], [ - 59, - 64 + 69, + 74 ], [ - 67, - 68 + 77, + 78 ], [ - 67, - 72 + 77, + 82 ], [ - 75, - 76 + 85, + 86 ], [ - 75, - 80 + 85, + 90 ], [ - 83, - 84 + 93, + 94 ], [ - 83, - 88 + 93, + 98 ], [ - 91, - 92 + 101, + 102 ], [ - 91, - 96 + 101, + 106 ], [ - 99, - 100 + 109, + 110 ], [ - 99, - 104 + 109, + 114 ], [ - 107, - 108 + 117, + 118 ], [ - 107, - 112 + 117, + 122 ], [ - 115, - 116 + 125, + 126 ], [ - 115, - 120 + 125, + 130 ], [ - 123, - 124 + 133, + 134 ], [ - 123, - 128 + 133, + 138 ], [ - 131, - 132 + 141, + 142 ], [ - 131, - 136 + 141, + 146 ], [ - 139, - 140 + 149, + 150 ], [ - 139, - 144 + 149, + 154 ], [ - 153, - 154 + 163, + 164 ], [ - 153, - 158 + 163, + 168 ], [ - 173, - 174 + 183, + 184 ], [ - 173, - 176 + 183, + 186 ], [ - 176, - 177 + 186, + 187 ], [ - 176, - 180 + 186, + 190 ], [ - 192, - -184 + 202, + -194 ], [ - 192, - 193 + 202, + 203 ], [ - 196, - -196 + 206, + -206 ], [ - 196, - 196 + 206, + 206 ], [ - 196, - 201 + 206, + 211 ], [ - 201, - -201 + 211, + -211 ], [ - 201, - -184 + 211, + 211 ], [ - 201, - 201 + 211, + 213 ], [ - 210, - 209 + 222, + 221 ], [ - 210, - 213 + 222, + 225 ], [ - 214, - 213 + 226, + 225 ], [ - 214, - 217 + 226, + 229 ], [ - 218, - 217 + 230, + 229 ], [ - 218, - 221 + 230, + 233 ], [ - 226, - 225 + 251, + 250 ], [ - 226, - 234 + 251, + 261 ], [ - 229, - 230 + 256, + 257 ], [ - 229, - 231 + 256, + 258 ], [ - 231, - -225 + 258, + -250 ], [ - 231, - 232 + 258, + 259 ], [ - 235, - 234 + 262, + 261 ], [ - 235, - 239 + 262, + 266 ], [ - 236, - -234 + 263, + -261 ], [ - 236, - 237 + 263, + 264 ], [ - 240, - 239 + 267, + 266 ], [ - 240, - 243 + 267, + 270 ], [ - 244, - 243 + 271, + 270 ], [ - 244, - 247 + 271, + 274 ], [ - 248, - 247 + 275, + 274 ], [ - 248, - 251 + 275, + 278 ], [ - 252, - 251 + 279, + 278 ], [ - 252, - 255 + 279, + 282 ], [ - 256, - -11 + 283, + 282 ], [ - 256, - 255 + 283, + 286 + ], + [ + 287, + -21 + ], + [ + 287, + 286 ] ], "missing_branches": [] } }, "totals": { - "covered_lines": 182, - "num_statements": 182, + "covered_lines": 202, + "num_statements": 202, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, - "num_branches": 68, + "num_branches": 70, "num_partial_branches": 0, - "covered_branches": 68, + "covered_branches": 70, "missing_branches": 0 } } \ No newline at end of file diff --git a/nrt_pytest_soft_asserts/__init__.py b/nrt_pytest_soft_asserts/__init__.py index c218a0f..5312f3c 100644 --- a/nrt_pytest_soft_asserts/__init__.py +++ b/nrt_pytest_soft_asserts/__init__.py @@ -1,3 +1,3 @@ -__version__ = '1.0.9' +__version__ = '1.1.0' diff --git a/nrt_pytest_soft_asserts/soft_asserts.py b/nrt_pytest_soft_asserts/soft_asserts.py index a7baaed..8d83139 100644 --- a/nrt_pytest_soft_asserts/soft_asserts.py +++ b/nrt_pytest_soft_asserts/soft_asserts.py @@ -1,11 +1,21 @@ +import linecache +import os from dataclasses import dataclass from typing import Callable, Optional, List +import inspect @dataclass class Failure: error: str step: str + file_path: str + code_line: str + line_number: int + + def __str__(self): + return f'{self.error} ' \ + f'[{self.file_path}: {self.line_number}] {self.code_line}' class SoftAsserts: @@ -198,7 +208,9 @@ def assert_all(self): [failure.step for failure in failures if failure.step is not None]))) - raise AssertionError('\n'.join([failure.error for failure in failures])) + errors = '\n'.join([str(failure) for failure in failures]) + + raise AssertionError(f'\n{errors}') def is_step_in_failure_steps(self, step: str) -> bool: return step in self.failure_steps @@ -219,13 +231,28 @@ def failure_steps(self, value): self.__failure_steps = value def __append_to_failures(self, error): - self.__failures.append(Failure(error, self.__current_step)) - self.__print_error_to_log(error) + + file_path, code_line, line_number = \ + self.__get_failure_file_path_and_line_code_and_line_number() + + failure = \ + Failure( + error=error, + step=self.__current_step, + file_path=file_path, + code_line=code_line, + line_number=line_number) + + self.__failures.append(failure) + + self.__print_error_to_log(failure) @classmethod - def __print_error_to_log(cls, error): + def __print_error_to_log(cls, failure: Failure): cls.__validate_params() + error = str(failure) + if cls.__print_method: cls.__print_method(error) elif cls.__logger: @@ -255,3 +282,13 @@ def set_print_method(cls, print_method: Callable): @classmethod def unset_print_method(cls): cls.__print_method = None + + @classmethod + def __get_failure_file_path_and_line_code_and_line_number(cls): + frame = inspect.currentframe() + frame = frame.f_back.f_back.f_back + file_path = os.path.relpath(frame.f_code.co_filename) + line_number = frame.f_lineno + code_line = linecache.getline(file_path, line_number).strip() + + return file_path, code_line, line_number diff --git a/pyproject.toml b/pyproject.toml index d120c0d..9564d31 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name='nrt-pytest-soft-asserts' -version='1.0.9' +version='1.1.0' authors=[ { name='Eyal Tuzon', email='eyal.tuzon.dev@gmail.com' }, ] diff --git a/tests/nrt_pytest_soft_asserts/soft_asserts_test.py b/tests/nrt_pytest_soft_asserts/soft_asserts_test.py index 92f3875..b714cdc 100644 --- a/tests/nrt_pytest_soft_asserts/soft_asserts_test.py +++ b/tests/nrt_pytest_soft_asserts/soft_asserts_test.py @@ -263,7 +263,7 @@ def test_assert_raised_with_fail(before_test): def test_fail_with_print_message(before_test): SoftAsserts.set_print_method(__print) soft_asserts.assert_true(False, ERROR_MESSAGE_1) - assert print_message == ERROR_MESSAGE_1 + assert print_message.startswith(ERROR_MESSAGE_1) __verify_assert_all_raised_exception()