pyCharm for python
https://www.jetbrains.com/ru-ru/pycharm/
https://www.jetbrains.com/ru-ru/pycharm/
JetBrains
PyCharm β Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Python
Π‘ΠΎΠ·Π΄Π°Π½ΠΎ Π΄Π»Ρ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ
ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² ΠΏΠΎ ΠΠ ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ IDE Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠ°.
Forwarded from ΠΠ½ΠΈΠ³ΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ²
ββPython Unit Test Automation (2017)
ΠΠ²ΡΠΎΡ: Ashwin Pajankar
#python #book #english #advanced
Π―Π·ΡΠΊ: Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ.
Π¦Π΅Π»Π΅Π²Π°Ρ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡ: ΠΎΠΏΡΡΠ½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ.
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅βββΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π Π½Π°ΡΡΠΎΡΡΠ΅ΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ Π²Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΠ΅ΡΡ Ρ ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ°ΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΊΠ°ΠΊ doctest, unittest, nose, nose2 ΠΈ pytest. ΠΡ ΡΠ·Π½Π°Π΅ΡΠ΅ ΠΎ Π²Π°ΠΆΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° Python 3, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ·Π½Π°Π΅ΡΠ΅ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ Python 2 ΠΈ 3.
Π ΠΊΠ½ΠΈΠ³Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΠΌΡ:
β Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Python;
β ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅;
β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΡΠΎΠ²;
β ΠΎΠ±Π·ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ nose ΠΈ nose2;
β ΠΏΡΠΈΠ½Ρ TDD ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°:
β Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ±ΡΡΠΌ;
βΠ°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»;
β ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°;
β ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΌ.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ:
β Π½Π΅ Π·Π°ΠΌΠ΅ΡΠ΅Π½ΠΎ.
ΠΠ²ΡΠΎΡ: Ashwin Pajankar
#python #book #english #advanced
Π―Π·ΡΠΊ: Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ.
Π¦Π΅Π»Π΅Π²Π°Ρ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡ: ΠΎΠΏΡΡΠ½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ.
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅βββΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π Π½Π°ΡΡΠΎΡΡΠ΅ΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ Π²Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΠ΅ΡΡ Ρ ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ°ΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΊΠ°ΠΊ doctest, unittest, nose, nose2 ΠΈ pytest. ΠΡ ΡΠ·Π½Π°Π΅ΡΠ΅ ΠΎ Π²Π°ΠΆΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° Python 3, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ·Π½Π°Π΅ΡΠ΅ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ Python 2 ΠΈ 3.
Π ΠΊΠ½ΠΈΠ³Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΠΌΡ:
β Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Python;
β ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅;
β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΡΠΎΠ²;
β ΠΎΠ±Π·ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ nose ΠΈ nose2;
β ΠΏΡΠΈΠ½Ρ TDD ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°:
β Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ±ΡΡΠΌ;
βΠ°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»;
β ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°;
β ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΌ.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ:
β Π½Π΅ Π·Π°ΠΌΠ΅ΡΠ΅Π½ΠΎ.
private void SendMessage(string phoneNum, string messageText)
{
var service = new SMSGateClient();
service.ClientCredentials.UserName.UserName = "smsgateuser";
service.ClientCredentials.UserName.Password = "SmsGate20Raz";
var auth = new AuthData() { Login = "StartSMS", Password = "SmsSmsSms30Raz" };
var nums = phoneNum.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries);
//var ident = service.SendMessage(auth, phoneNum.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries), messageText);
foreach (var num in nums)
{
try
{
var ident = service.SendMessage(auth, new[] { num }, StringSplitOptions.RemoveEmptyEntries), messageText);
LogMessage(phoneNum, messageText, ident.FirstOrDefault()?.MessageID > 0 ? "ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ" : "ΠΡΠΈΠ±ΠΊΠ°");
}
catch (Exception e)
{
MessageBox.Show($"{num}\r\n{e.Message}");
}
}
}
{
var service = new SMSGateClient();
service.ClientCredentials.UserName.UserName = "smsgateuser";
service.ClientCredentials.UserName.Password = "SmsGate20Raz";
var auth = new AuthData() { Login = "StartSMS", Password = "SmsSmsSms30Raz" };
var nums = phoneNum.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries);
//var ident = service.SendMessage(auth, phoneNum.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries), messageText);
foreach (var num in nums)
{
try
{
var ident = service.SendMessage(auth, new[] { num }, StringSplitOptions.RemoveEmptyEntries), messageText);
LogMessage(phoneNum, messageText, ident.FirstOrDefault()?.MessageID > 0 ? "ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ" : "ΠΡΠΈΠ±ΠΊΠ°");
}
catch (Exception e)
{
MessageBox.Show($"{num}\r\n{e.Message}");
}
}
}