關於pycharm右鍵只能選擇run Unitiest不能直接run的解決方法


'''
本人是python初學者
看的課本是[python變成從入門到實踐]課本指定編譯器是Geany,用了一小段時間后,朋友推薦了pycharm,所以就用的pycharm編輯python,
在課本的'測試函數'這一章中,pycharm無法顯示書中所示的結果,所以就了解了一下
PS:在geany中是完全再現書中的結果
要測試的方法:name_function.py中的get_formatted_name()方法
import unittest
from name_function import get_formatted_name


class NamesTestCase(unittest,TestCase):
"""測試name_function.py"""
def test_first_last_name(self):
"""能夠正確的處理像Janis Joplin這樣的姓名嗎?"""
formatted_name = get_formatted_name('janis','joplin')
self.assertEqual(formatted_name,'janis joplin')
def test_first_last_middle_name(self):
"""能夠正確的處理像Wlfgang Amadeus Mozart這樣的姓名嗎?"""
formatted_name = get_formatted_name('wolfgang','mozart','amadeus')
self.assertEqual(formatted_name,'Wolfgang Amadeus Mozart')
# 這一行是為了看__name__的值
print('*****'+_name_)
# 將unittest.main()改成下面這樣
if __name__ == '__main__':
unittest.main()

print('*****'+_name_)
這個是為了看_name_的值,記得要注釋掉,否則別的py文件調用這個py文件的時候會運行,末尾和書中有點不一樣,
unittest.main()

if __name__ == '__main__':
unittest.main()
都可以,但是最好還是第二種,為了避免別的.py文件引用該文件后會運行該文件的unittest.main()方法,看不懂的下面就是解釋
這樣的代碼,結果不一定和梳理的一樣,為什么呢?
這要先從_name_這個屬性開始說:
比如一個python文件,命名為a.py
當從編輯器中直接運行a.py或者從命令行中直接運行a.py,那么a.py的__name__屬性就是'__main__'
如果另外有一個b.py,從b.py中導入a.py,即b.py中import a,然后運行a.py,那么a.py的__name__屬性就a.py的文件名,也就是'a'
詳情見:
python中
if __name__ == '__main__':
說完__name__,大家就要看運行該文件時實際運行的是什么
為了更明白的說明問題,不要用ctrl+shift+f10運行,要點右鍵,出來菜單后點運行
正常來說,只有運行該py文件,結果才能跟書里的一樣
拿上面的例子來說,要運行test_name_function.py才能出來書中的結果,即點右鍵,出來菜單后點'run test_name_function',但實際上點擊了右鍵
后出來的卻是'run Unittest in test_name_function',這個的意思好像是在test_name_function中運行Unittest,還是在Unittest中運行
test_name_function,我也不是太清楚,總之,好像是一個引用,這就導致了__name__屬性變了,不是'__main__',而是'test_name_function',導致
出不來書中的結果,如下
圖略
運行結果不是我們想要的
這個問題的關鍵就在於,怎么講'run Unittest in test_name_function'變成'run test_name_function'
有三種方法:
一:unittest運行單個用例
1.如上代碼如果我只想運行其中一個,如test_name_function,如何運行呢?
2.如果想運行哪個用例,鼠標放到對應的區域,右鍵就能直接運行單個用例了
二:unittest運行整個腳本用例
1.如果想當前的腳本上所有的用例一起執行,只需要把鼠標放到if __name__ == '__main__',這句話的后面或者下方就行了
三:python直接運行模式
1.以上方式只能執行單元測試框架里面的內容,是沒有測試報告輸出的,如果想輸出測試報告,就得以非unittest模式運行,也就是python直接運行
2.點右上角,點開:Edit Configurations
3.展開python和python tests這兩個選項,會發現剛才運行的腳本名稱在python tests這個選項下,也就是pycharm這個工具自動默認為unittest姿勢
運行了
4.解決方法,只需從這里移除掉就行,選中這個腳本,點左上角的減號
5.全部移除后,點Apply應用,然后點保存
6.再回到腳本頁面,右鍵運行,就能出測試報告(鼠標一定要放在if這一行后邊右鍵,才能看到正常顯示Run‘test’)


'''
'''
以上是在不明白python規則情況下的解決辦法。
知道今天在研究unittest自動化測試,了解到unittest單元測試的最小單位是函數,且這些函數都要以test開頭,這是才潘然醒悟,可能就是下面這個原因

pycharm默認支持python自有單元測試包'unittest',所以定義的函數或者類包含'test'或者'TEST'的自研就默認只能使用unittest的方式運行
最后把腳本里面的test改成tst,運行成功
'''


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM